【发布时间】:2013-12-11 23:03:58
【问题描述】:
我使用庞大的医院活动记录数据集。每条记录都代表代表患者所做的事情。我的重点是经历过“门诊”活动的患者,例如参加预约或诊所。 在数据中,我们得到重复的记录;患者被证明在六个月内参加过一次以上的首次门诊预约。这是发送数据的医院的错误。我们必须确定这些记录才能作为挑战发回。
我有以下 SQL 语句,它正在查找“Patient Code”多次出现的记录。
SELECT * FROM dbo.Z_ForQueries a
JOIN (SELECT PatientCode
FROM dbo.Z_ForQueries
GROUP BY PatientCode
HAVING COUNT (*) > 1 ) b
ON a.PatientCode = b.PatientCode
WHERE [Multiple OPFA in month] = 'y'
我终其一生都无法弄清楚下一位的语法;对于每组重复的患者代码,我只想查看其中一个记录的“月份”为 7 的记录(这就是我正在处理的当前月份)。如果当月没有一组重复记录有“7”,那么我不需要查看它们。
例如,患者代码 L000066715 有 4 条记录,我可以看到每条记录代表同一医院专科的同一初次门诊预约。显然你只能“第一次参加”一次。每条记录都有一个月号; 3、4、6 和 7。由于此患者代码在第 7 个月有一条重复记录,因此我需要将其与其他 3 条记录一起返回到结果中。
其他患者代码存在重复,但他们的记录都不是从第 7 个月开始的,因此不需要返回。
我希望我已经正确设置了场景以寻求帮助!谢谢。
【问题讨论】:
-
这是 TSQL 吗? PL/SQL? MySQL?
标签: sql sql-server duplicates