我希望查找重复数据的多对一关系中的SQL数据计数

时间:2011-08-30 23:20:53

标签: sql sql-server

我有一个3表结构,以便:

表患者 - PatientID PK与表预约(PK ApptID)有1对多的关系 Table Appointment与表Encounter(PK EncounterID)有1对多的关系。 ApptID是Encounter表的FK。

Encounter表有一些值得注意的字段。 PK:EncounterID,FK:ApptID,DateofEncounter(datetime)和Code(varchar)。最后两个不是键或任何东西。

我想要做的是搜索具有相同代码,相同ApptID和相同DateoFEncounter的重复遭遇。我想要一个PatientID列表,然后是ApptID

我有这个SQL,其中列出了PatientID,ApptID和Encounters。但我不知道这些遭遇是否重复。 (他们可能在不同的日期,或不同的代码,或不是什么)。我不知道如何使用相同的代码找到同一天发生的那些。有什么建议吗?

select a.PatientID, a.ApptID, COUNT(e.EncounterID) AS NumberOfEncounters
FROM Appointment a LEFT JOIN Encounter e on e.ApptID = a.ApptID
GROUP BY a.PatientID, a.ApptID
ORDER BY COUNT(e.EncounterID) DESC

1 个答案:

答案 0 :(得分:1)

select a.PatientID, a.ApptID, COUNT(e.EncounterID) AS NumberOfEncounters
FROM Appointment a LEFT JOIN Encounter e on e.ApptID = a.ApptID
                            AND EXISTS (SELECT * FROM Encounter e2 WHERE e.pkEncounterID <> e2.pkEncounterID AND e.Code = e2.Code AND e.DateofEncounter = e2.DateofEncounter AND e.ApptID = e2.ApptID)
GROUP BY a.PatientID, a.ApptID
ORDER BY COUNT(e.EncounterID) DESC