2016-08-18 1 views
-2

Das folgende ist meine Abfrage. Ich muss die Anzahl der Arztbesuche für jeden Patienten in der Abfrage ermitteln. Die Zählung ist nicht richtig und es werden 2 Zeilen für jeden Patienten gedruckt.zählen mit Unterabfragen in T-sql

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 

Was mache ich falsch?

Hilfe !!!

+1

Mit Ausnahme von grundlegenden Syntaxfehlern sind Abfragen für sich selbst UNELECHTIG, um Probleme ohne begleitende Beispieldaten und Tabellenstrukturen zu ermitteln. –

+0

Bitte überprüfen Sie dies [LINK o die Frage zu verbessern] (https://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/) – TheGameiswar

Antwort

0

Sie gruppieren sich auf zu vielen Feldern. Wenn Sie nur die Anzahl der Arztbesuche für jeden Patienten benötigen, wählen Sie nur SELECT PatientenProfile-Felder zusammen mit count (p.visit) und fügen Sie einfach die gleichen PatientProfile-Felder in die GROUP BY ein.