我试图写一个简单的查询,其中每个ID都需要同时拥有产品A和B,但不能同时拥有产品A和B.在我的示例中,我只希望ID#3和每个ID的产品都返回,因为其他ID都不符合此条件。
我已经看过Count / Rank / Row_Number,但似乎无法想出这一点。也许我以错误的方式看待它。有什么想法吗?
ID Product
1 A
2 A
3 A
3 A
3 B
4 A
5 B
6 B
6 B
答案 0 :(得分:5)
使用group by
和having
。
select id
from tbl
where product in ('A','B')
group by id
having count(distinct product) = 2
答案 1 :(得分:0)
如果只有2种产品,您可以自行加入您的桌子:
SELECT A.ID, A.Product, B.Product FROM [table] A INNER JOIN [table] B ON A.ID = B.ID AND A.Product != B.Product