我有一个具有以下架构的表:
CREATE TABLE Codes
(
diagnosis_code CHAR,
visit_date DATE,
visit_id INT,
patient_id int
);
我想输出patient_id
,其中病人再次入院(所以不同的S visit_id
)与同diagnosis_code
在一定时间内(比如15天)。例如,如果我在表中有以下条目:
diagnosis_code visit_date visit_id patient_id
-------------- ---------- ----------- -----------
A 2018-01-01 1 1
B 2018-01-01 1 1
A 2018-01-07 2 1
C 2018-01-01 3 2
D 2018-01-01 4 3
D 2018-01-20 5 3
E 2018-01-01 6 4
E 2018-01-01 6 4
A 2018-01-07 7 1
查询将仅返回patient_id
= 1
,其基本原理如下:
1
,因为在visit_id
1
和之间2
,这名患者共享了诊断代码A
。2
因为这个病人只被收治了一次。3
因为该患者虽然因相同的诊断再次入院,但在初次就诊后 15 天内没有再次入院。4
因为该患者在同一次就诊中具有重复的诊断代码。patient_id
=1
在visit_id
=期间因相同的诊断被重新接纳7
,但他之前已经被计算过一次。您可以尝试一个简单的连接,添加您描述的条件:
select
distinct c.patient_id
from codes c
join codes d on d.patient_id = c.patient_id
and d.visit_id <> c.visit_id
and d.diagnosis_code = c.diagnosis_code
and d.visit_date between c.visit_date
and dateadd(day, 15, c.visit_date)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句