SQL如何选择至少包含某个条件且多次出现的ID?
我正在尝试查询满足以下条件的ID数据:SQL如何选择至少包含某个条件且多次出现的ID?,sql,sql-server,Sql,Sql Server,我正在尝试查询满足以下条件的ID数据: 必须出现1个以上的ID(出现2行或更多) 诊所B至少出现一次的ID 数据表: ID | Clinic ----------- 1 | A 1 | B 2 | A 2 | C 3 | B 3 | C 4 | B 结果应该是ID 1和ID 3。 我可以通过以下方法获得1): SELECT ID, COUNT(*) FROM Data Table GROUP BY ID HAVING COUNT(ID)>1 但是不能将条件2)合并到中。
ID | Clinic
-----------
1 | A
1 | B
2 | A
2 | C
3 | B
3 | C
4 | B
结果应该是ID 1和ID 3。
我可以通过以下方法获得1):
SELECT ID, COUNT(*)
FROM Data Table
GROUP BY ID
HAVING COUNT(ID)>1
但是不能将条件2)合并到中。您可以使用条件聚合来计算每个
ID
出现的B
的数量
SELECT ID, COUNT(*)
FROM [Data Table]
GROUP BY ID
HAVING COUNT(ID) > 1
AND SUM (CASE WHEN Clinic = 'B' THEN 1 ELSE 0 END) >= 1
您可以使用条件聚合来计算每个
ID出现的B
数量
SELECT ID, COUNT(*)
FROM [Data Table]
GROUP BY ID
HAVING COUNT(ID) > 1
AND SUM (CASE WHEN Clinic = 'B' THEN 1 ELSE 0 END) >= 1
我试过这个,得到了与“松鼠”相似的答案
SELECT t1.* from Data Table t1, Data Table t2
WHERE t1.ID = t2.ID AND Clinic = 'B'
我试过这个,得到了与“松鼠”相似的答案
SELECT t1.* from Data Table t1, Data Table t2
WHERE t1.ID = t2.ID AND Clinic = 'B'
在本例中,您的“数据表”中的4不能显示,因为它只显示一次?如果你在条件之间加上“与否”和“与否”,那么结果中就会有ID 3。为什么不ID 3
?它发生了2次,而且我打字错误。它还应该包括3个。谢谢你的指点@蜘蛛侠然后你有一个答案,你可以投票,并标记为正确的。要准确。必须同时满足两个条件还是其中一个条件?你们的桌子允许重复吗?您的第一个条件是否应考虑重复?小心你的假设。在这个例子中,从你的“数据表”4不能显示,因为它只出现一次?如果你在条件之间加上“与否”和“与否”,那么结果中就会有ID 3。为什么不ID 3
?它发生了2次,而且我打字错误。它还应该包括3个。谢谢你的指点@蜘蛛侠然后你有一个答案,你可以投票,并标记为正确的。要准确。必须同时满足两个条件还是其中一个条件?你们的桌子允许重复吗?您的第一个条件是否应考虑重复?小心你的假设,这是不对的。通过此查询,第一个请求将不会得到满足:“必须出现超过1个ID(出现2行或更多)”。正确答案是@Squirrel提供的答案,我认为没有更好的答案。你为什么要更进一步?这是不对的。通过此查询,第一个请求将不会得到满足:“必须出现超过1个ID(出现2行或更多)”。正确答案是@Squirrel提供的答案,我认为没有更好的答案。你为什么要更进一步?