我有一个表,里面有ID,诊断代码和诊断日期。一个独特的患者可以有多个诊断日期和代码。
ID |diagnosis_date|diagnosis_code
PT2073|2015-02-28 |5.2
PT2073|2019-02-28 |5.10
PT2013|2015-04-28 |1
PT2013|2017-02-11 |5
PT2013|2017-07-11 |5.10
PT2024|2010-02-11 |5
PT2024|2011-07-11 |3
目标:找出他们被诊断为疾病1的最小日期,diagnosis_code
-ilke5和患者被诊断为疾病2的最小日期,diagnosis_code
-ilke5.1。疾病2是一种特殊类型的疾病1,患者也可能进展。我想找到那些首先被诊断为疾病1的患者,然后在未来发展到疾病2。
我试过了:
from patient_details
group by id
having
min(case when diagnosis_code ilike '5' then diagnosis_date end)
< max(case when diagnosis_code ilike '5.10' then diagnosis_date end)
这只是返回所有唯一的患者ids。我想要一个从疾病1转移到疾病2的患者的数量,比如患者PT2073。
发布于 2019-11-13 05:18:46
这感觉像是window functions...which的一个很好的用例,它将允许您根据所查找的条件保留整行数据,而不是仅仅返回ids,这是您目前遇到的问题。
既然你用红移标记了这个,check out these docs。
但基本上,我会:
所以我猜这看起来像是一个子查询来做行号,然后至少有一个外部查询做过滤/计数。
https://stackoverflow.com/questions/58823168
复制相似问题