SQL - 具有计数的多个Group By语句

时间:2014-09-19 19:18:50

标签: sql ms-access group-by subquery

我正在为Microsoft Access中的工作编写查询。 Raw表看起来像这样:

ColA | ColB

aa | X

aa | ÿ

bb | X

bb | x

我想解决的问题是:对于A列中的每个不同值,B列中不同值的计数是多少?

输出类似于:

aa | 2

bb | 1

我想更进一步,只选择count = 1的那些,所以:

bb | 1

将是唯一的结果。

我已经找到了我认为是一个过于复杂的子查询来实现这一点,但我希望有人有一个更优雅的解决方案。

由于

2 个答案:

答案 0 :(得分:1)

要选择只有一个A值的B值,您可以使用:

select t.A
from mytable as t
group by t.A
having min(t.B) = max(t.B);

在考虑重复时忽略NULL个值。如有必要,可以考虑这一点。此外,计数似乎是多余的,因为它总是1。

答案 1 :(得分:0)

我想出的解决方案是:

SELECT X.A, COUNT(X.B)
FROM (
      SELECT D.A, D.B
      FROM MY_TABLE as D
      GROUP BY D.A, D.B
      )  AS X
GROUP BY X.A
HAVING COUNT(X.B) = 1