繁体   English   中英

Microsoft Access sql 查询以查找列中所有值都匹配的记录

[英]Microsoft Access sql query to find records where all values in a column match

我有一个类似于下面的:

产品编号 分配 序号
1 011 123
1 705 123
1 660 123
2 011 511
2 705 412
2 660 216

我正在尝试编写一个返回每个产品 ID 的查询,如果所有部门的 OrdNum 相同,它将返回 OrdNum,如果 OrdNum 不同,它将返回“Varies”

结果应如下所示:

产品编号 序号
1 123
2 变化

考虑:

查询1:

SELECT DISTINCT Table1.ProductID, Table1.OrdNum FROM Table1;

查询2:

SELECT ProductID, Count(OrdNum) AS CountOfOrdNum
FROM Query1
GROUP BY ProductID;

查询3:

SELECT Table1.ProductID, IIf([CountOfOrdNum]=1,[OrdNum],"Varies") AS Ord
FROM Query2 INNER JOIN Table1 ON Query2.ProductID = Table1.ProductID
GROUP BY Table1.ProductID, IIf([CountOfOrdNum]=1,[OrdNum],"Varies");

以下查询可能对您有用。

select t2.ProductID,iif(t2.OrdCount>1,"Varies",DLookup("[OrdNum]","[Table1]","[ProductID]="&t2.ProductID)) as OrdNum
from (select t1.ProductID, count(t1.ProductID) as OrdCount
from (select ProductID, OrdNum, Count(Division) AS CountOfDivision from Table1 group by ProductID, OrdNum) as t1 group by t1.ProductID) as t2

在此处输入图像描述

只需比较最小值和最大值:

Select 
    ProductID,
    IIf(Min(OrdNum) = Max(OrdNum), First(OrdNum), "Varies") As OrderNumber
From
    YourTable
Group By
    ProductID

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM