忽略子句

时间:2015-11-05 20:59:30

标签: sql sql-server count having

在这个查询中,我试图得到一个计数,让我在给定条件下为每次练习计算患者数。

问题在于,我必须向过去一年中曾有> = 3次就诊的病人展示。

  

计数(D.PID)

选择列表中的

忽略

  

HAVING count(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,我的短语就能正常工作。

有一些关于计数的东西,现在可以一起正常工作。

2 个答案:

答案 0 :(得分:0)

修改回答:

Data data = (Data) parent.getItemAtPosition(position)
elementoSeleccionado = data.getNombre();

答案 1 :(得分:0)

你一次尝试做太多事。分两步拆分逻辑:

  1. PID查询分组,以过滤掉不符合条件的患者。
  2. 通过练习查询分组以获得患者数。
  3. 您的查询将如下所示:

    ;with EligiblePatients as (
        select d.pid,
               d.PracticeAbbrevName,
               d.ProviderLastName
          from PersonDetail d
          left join Visit v
            on v.pid = d.pid
           and v.admitdatetime >= (getdate()-365)
         where d.A1C >= 7.5
           and d.A1CDays < 180
           and d.Diabetes = 1
         group by d.pid,
                  d.PracticeAbbrevName,
                  d.ProviderLastName
         having count(v.pid) >= 3
    )
    select PracticeAbbrevName,
           ProviderLastName,
           COUNT(*) as PatientCount
      from EligiblePatients
     group by PracticeAbbrevName,
              ProviderLastName
     order by PracticeAbbrevName