我有一张桌子,上面有病人的医院就诊信息。我正在尝试标记上次访问后90天内发生的访问。但是,需要注意的是,一旦将某个访问标记为重复访问,就不应将该访问用于评估与另一个访问的重复。让我举例说明。
visitID patientid visit_date
1 23 1/12/2018
2 23 1/30/2018
3 23 4/20/2018
4 23 5/02/2018
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,患者进行了4次就诊。访问2在访问1的90天内,因此应将访问2标记为重叠。标记访问2后,该行就不应在分析中用于以后的任何访问的重叠标识。从概念上讲,这就像删除访问2并再次开始分析。
过渡阶段(访问2已删除,分析再次开始)
visitID patientid visit_date
1 23 1/12/2018
3 23 4/20/2018
4 23 5/02/2018
Run Code Online (Sandbox Code Playgroud)
因此,即使访问3与访问2重叠,由于从分析中删除了访问2,由于前一次访问(访问1)的距离还不到90天,因此不会标记访问3。最后,应标记4次访问,因为它与未标记的访问重叠。
visitID patientid visit_date flag
1 23 1/12/2018 0
2 23 1/30/2018 1
3 23 4/20/2018 0
4 23 5/02/2018 1
Run Code Online (Sandbox Code Playgroud)
我试图解决这个难题:
WITH overlaps AS
(SELECT DISTINCT T2.visit
FROM visits_table AS T1
INNER JOIN visits_table AS T2
ON T1.visit != T2.visit
AND T2.visit_date BETWEEN T1.visit_date AND DATEADD(DAY, 89, …Run Code Online (Sandbox Code Playgroud)