【发布时间】:2015-11-05 20:59:29
【问题描述】:
在此查询中,我试图获得一个计数,以便在给定条件下为每次实践提供患者计数。
问题是我必须向患者展示过去一年中就诊次数 >=3 次的患者。
计数(D.PID)
在选择列表中忽略
拥有计数(admitdatetime)>=3
这是我的查询
select distinct D.PracticeAbbrevName, D.ProviderLastName, count(D.pid) AS Count
from PersonDetail AS D
left join Visit AS V on D.PID = V.PID
where D.A1C >=7.5 and V.admitdatetime >= (getdate()-365) and D.A1CDays <180 and D.Diabetes = 1
group by D.PracticeAbbrevName, D.ProviderLastName
having count(admitdatetime)>=3
order by PracticeAbbrevName
如果我去掉 D.pid 的计数功能,只单独显示每个 PID,我的短语就可以正常工作。
count 和现在可以一起正常工作。
【问题讨论】:
-
您不能使用
group by单独显示每个 PID。请显示您的结果以及不正确的原因。 -
注意:
COUNT(column)与COUNT(DISTINCT column)不同。 (同时使用SELECT DISTINCT和GROUP BY几乎总是多余的,但不是导致您的问题的原因) -
当我单独显示每个 PID 时,我将 PID 添加到分组依据。例如,对于一个 providerlastname,COUNT 是 21,但是当我按单个 PID 选择时,有 2 个。当我删除单个 PID 的 having 语句时,它会转到 21 个唯一 PID
-
谢谢@RBarryYoung 我实际上有 count(distinct d.pid) 但在尝试四处寻找解决方案时,我将它移到了上面显示的位置。正如你所说,这并不能解决问题
标签: sql sql-server count having