Sql 仅选择具有这两个值的人员

Sql 仅选择具有这两个值的人员,sql,select,Sql,Select,我有一个包含两列的表: ClientID | PhoneType 1 | 4 1 | 4 1 | 5 2 | 4 3 | 5 我试图编写一个查询,只显示同时拥有这两种电话类型的客户。 所以输出应该只显示客户端ID 1 正如您所注意到的,客户端1有两种类型“4”电话类型,因此我尝试不使用GroupBy/HavingCount of方法来缩小结果范围。这是我能找到的唯一的例子。类似于 SELECT x.ClientID

我有一个包含两列的表:

ClientID | PhoneType
    1    |  4
    1    |  4
    1    |  5
    2    |  4
    3    |  5
我试图编写一个查询,只显示同时拥有这两种电话类型的客户。 所以输出应该只显示客户端ID 1

正如您所注意到的,客户端1有两种类型“4”电话类型,因此我尝试不使用GroupBy/HavingCount of方法来缩小结果范围。这是我能找到的唯一的例子。

类似于

SELECT x.ClientID
FROM (
   SELECT DISTINCT ClientID, PhoneType FROM [Table A]
) AS x
GROUP BY x.ClientID
HAVING COUNT(x.PhoneType) = 2

DISTINCT用于从计数中删除重复项,以防客户端有2部或2部以上相同类型的手机。

我目前没有访问SQL Server的权限,但似乎您应该能够使用以下选项,这比Gavin的答案要简单一些:

SELECT ClientID
FROM [Table A]
GROUP BY ClientID
HAVING COUNT(DISTINCT PhoneType) = 2

不完全确定count distinct在拥有时是否起作用,但我不明白为什么它不起作用。

我想你仍然需要一个x.ClientID的组,不是吗?@Jeff-干杯。现在补充说。从记忆中把它拼凑起来。解释一下为什么
不同的
使这是正确的答案会很好。是的,谢谢你,我尝试了你的方法,它向我的小组抛出了一个错误。我昨晚加的,效果不错。我想我必须使用它,哈哈。