SQL如何选择至少包含某个条件且多次出现的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数据:

  • 必须出现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
    出现的
    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提供的答案,我认为没有更好的答案。你为什么要更进一步?