Sql Microsoft Access中的不同聚合查询,分组依据位于不同字段上

Sql Microsoft Access中的不同聚合查询,分组依据位于不同字段上,sql,ms-access,group-by,distinct,aggregate-functions,Sql,Ms Access,Group By,Distinct,Aggregate Functions,在我的表格中有两个字段,CTN_NUM和PO_NUM。每个PO_NUM至少有一个CTN_NUM,可能更清晰或重复。任何给定的CTN数量不能超过1个。换句话说,它是一对多关系。我想创建一个查询,显示每个PO_NUM的唯一CTN_NUM的数量。我在这个论坛上也看到过其他线程,但似乎没有一个能够解决这个问题。 以下是我尝试过的: (A) 这将返回每个订单的所有CTN NUM的计数,即使它们不是唯一的 (B) 虽然这可能在其他RDBMS中工作,但在Access中我得到一个语法错误 (C) 这将返回CTN

在我的表格中有两个字段,CTN_NUM和PO_NUM。每个PO_NUM至少有一个CTN_NUM,可能更清晰或重复。任何给定的CTN数量不能超过1个。换句话说,它是一对多关系。我想创建一个查询,显示每个PO_NUM的唯一CTN_NUM的数量。我在这个论坛上也看到过其他线程,但似乎没有一个能够解决这个问题。 以下是我尝试过的:

(A)

这将返回每个订单的所有CTN NUM的计数,即使它们不是唯一的

(B)

虽然这可能在其他RDBMS中工作,但在Access中我得到一个语法错误

(C)

这将返回CTN_NUM的总和,这些CTN_NUM与表不同,而与PO_NUM不同

D) 与C相同,但有一个GROUP BY:

SELECT COUNT(*)  
FROM  
(SELECT DISTINCT CTN_NUM AS cn  
FROM tempSpring_ASN)  
GROUP BY PO_NUM;  
这会提示我输入PO_NUM

你能给个建议吗?谢谢

试试这个:

SELECT PO_NUM, COUNT(*) AS CountOfCTN_NUM    
FROM   (
    SELECT PO_NUM, CTN_NUM 
    FROM tempSpring_ASN
    GROUP BY PO_NUM, CTN_NUM 
) a
GROUP BY PO_NUM;   
这也应该起作用:

SELECT PO_NUM, COUNT(*) AS CountOfCTN_NUM   
FROM   (
    SELECT DISTINCT PO_NUM, CTN_NUM 
    FROM tempSpring_ASN
) a
GROUP BY PO_NUM;   

字母
D
有语法错误
PO_NUM
在子查询中不存在,因此不能在其上使用group by。可能是子查询未命中
PO_NUM

SELECT COUNT(*)  
FROM  
(SELECT DISTINCT CTN_NUM AS cn  
FROM tempSpring_ASN)  
GROUP BY PO_NUM;  
SELECT PO_NUM, COUNT(*) AS CountOfCTN_NUM    
FROM   (
    SELECT PO_NUM, CTN_NUM 
    FROM tempSpring_ASN
    GROUP BY PO_NUM, CTN_NUM 
) a
GROUP BY PO_NUM;   
SELECT PO_NUM, COUNT(*) AS CountOfCTN_NUM   
FROM   (
    SELECT DISTINCT PO_NUM, CTN_NUM 
    FROM tempSpring_ASN
) a
GROUP BY PO_NUM;