我有一个包含2列的表:
ClientID | PhoneType
1 | 4
1 | 4
1 | 5
2 | 4
3 | 5
我正试图让查询只显示拥有这两种手机类型的客户端。 因此输出应该只显示客户端ID 1
正如您所注意到的,客户端1有两种类型'4'PhoneTypes,所以我试图不使用GroupBy / HavingCount方法来缩小结果范围。这是我能找到的唯一例子。
答案 0 :(得分:2)
像...一样的东西。
SELECT x.ClientID
FROM (
SELECT DISTINCT ClientID, PhoneType FROM [Table A]
) AS x
GROUP BY x.ClientID
HAVING COUNT(x.PhoneType) = 2
如果客户端有2个或更多相同类型的手机,则使用DISTINCT从COUNT中删除重复项。
答案 1 :(得分:0)
我目前无法访问SQL Server,但您似乎应该能够使用以下内容,这比Gavin的答案要简单一些:
SELECT ClientID
FROM [Table A]
GROUP BY ClientID
HAVING COUNT(DISTINCT PhoneType) = 2
不完全确定HAVING
中的计数是否有效,但我不明白为什么它不会...