使用T-sql中的子查询进行计数

时间:2016-08-18 16:53:00

标签: tsql

以下是我的查询。我需要在查询中获得每位患者的医生访问次数。计数不对,每位患者打印2行。

 SELECT 
     pf.PatientId
    , p.Visit
    , pf.first
    , pf.last
    , df.first
    , df.last
     , doc.reconcile_status
     , doc.orderid
     , count(p.visit)


  FROM [CentricityPS].[dbo].[PatientVisit] p
    , [CentricityPS].[dbo].[document] doc
    , [CentricityPS].[dbo].[Patientprofile] pf
    , [CentricityPS].[dbo].[doctorfacility] df

  where  df.pvid in ('1507023132004420', '1725527248154950', '1406648461000690')
     and  p.doctorid = df.DoctorFacilityId
     and p.patientprofileid = pf.patientprofileid
    and pf.pid = doc.pid
    and pf.patientstatusmid = '-900'
    and pf.PatientProfileId = p.PatientProfileId
--  and pf.PatientId = '8145' 
  -- and p.visit >= '2016-01-01' and p.visit <= '2016-07-01'
   and not exists (select * from [CentricityPS].[dbo].[PatientVisit] p 
   where  (p.visit > '2013-01-01' and p.visit < = '2016-01-01')

     and p.patientprofileid = pf.patientprofileid and pf.patientstatusmid not in (-901)  ) 
      and not exists (select * from [CentricityPS].[dbo].[PatientVisit] p 
   where  p.visit <= '2013-01-01' 
     and p.patientprofileid = pf.patientprofileid and pf.patientstatusmid not in (-901) ) 
--     and pf.patientid = '100293'
group by df.DoctorFacilityId, pf.PatientId, p.visit, pf.first, pf.last, df.first, df.last, doc.RECONCILE_STATUS, doc.ORDERID, p.PatientProfileId
 order by df.doctorfacilityid, pf.patientid, p.visit desc

我做错了什么?

帮助!!!

1 个答案:

答案 0 :(得分:0)

您正在对太多字段进行分组。如果您只需要每位患者的医生访问次数,只需选择PatientProfile字段和count(p.visit),并在GROUP BY中包含相同的PatientProfile字段。