2014-09-19 41 views
0

我正在爲Microsoft Access中的工作編寫查詢。原始表格如下所示:SQL - 具有計數的多個分組語句

ColA | COLB

AA | x

aa | y

bb | x

bb | X

我試圖解決的問題是:對於A列中每個不同的值,什麼是不同值的B列中的計數?

輸出將類似於:

aa | 2

bb | 1

我想利用它更進一步,僅選擇那些其中計數= 1,所以:

BB | 1

將是唯一的結果。

我已經找到了我認爲是一個過於複雜的子查詢做到這一點,但我希望有人有更好的解決方案。

感謝

回答

1

要選擇有B只有一個值的A值,你可以使用:

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

這忽略NULL值時考慮重複。必要時可以考慮這一點。此外,伯爵似乎是多餘的,因爲它始終爲1

+0

如果什麼數爲其他的東西比一個,比如說2.有沒有一個子查詢類似的查詢? – user1825257 2014-09-19 20:13:36

+0

@ user1825257。 。 。這變得更加困難,因爲Access不支持'count(distinct)'。我認爲在這種情況下需要一個子查詢。在任何其他關係數據庫中都很容易。 – 2014-09-19 20:45:45

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