在多个列上使用GROUP BY时使用HAVING限制结果

时间:2014-05-14 20:03:34

标签: sql sql-server

根据医生和患者的互动日期列表(VisitSchedule),我想选择所有看过2位以上独特患者的医生。我的问题是,为了隔离医生/患者,我需要由医生和患者进行分组。然后,我如何限制结果,只返回Dr. Moody?由于他已经看到三(3)名独特患者,Dr. Franks只见过两(2)名独特患者,即使他总共有更多的就诊?

Physician      Patient       VisitDate
-------------------------------------
Dr. Moody      Danny         5/1/2013
Dr. Moody      Danny         5/3/2013
Dr. Moody      Danny         5/7/2013
Dr. Moody      Paul          4/11/2013
Dr. Moody      Paul          5/10/2013
Dr. Moody      James         5/1/2013
Dr. Franks     Allison       4/18/2013
Dr. Franks     Allison       4/24/2013
Dr. Franks     Tammy         4/11/2013
Dr. Franks     Tammy         4/14/2013
Dr. Franks     Tammy         5/11/2013
Dr. Franks     Tammy         5/12/2013
Dr. Franks     Tammy         5/17/2013

SELECT Physician
FROM VisitSchedule
GROUP BY Physician, Patient
HAVING (COUNT(Physician) > 2)

我是否错误地使用COUNT

请注意我的last question与此相关,但我意识到我没有用两列正确解释分组。我试图简化这个问题,不要让它过于冗长,我最终过度简化

P.S。如果有人对“SQL拼图”书籍有任何建议,这将有助于实现这样的问题很好。

1 个答案:

答案 0 :(得分:3)

你开始很好,这个查询应该结束:

SELECT
    vs.Physician

FROM
    VisitSchedule vs

GROUP BY
    vs.Physician

HAVING
    COUNT(DISTINCT vs.Patient) > 2