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-干杯。现在补充说。从记忆中把它拼凑起来。解释一下为什么
不同的使这是正确的答案会很好。是的,谢谢你,我尝试了你的方法,它向我的小组抛出了一个错误。我昨晚加的,效果不错。我想我必须使用它,哈哈。