T-SQL - 两者都相同但不是

时间:2017-12-18 20:25:20

标签: sql sql-server sql-server-2008 tsql ssms

我试图写一个简单的查询,其中每个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

2 个答案:

答案 0 :(得分:5)

使用group byhaving

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