寻找病情更严重的患者

时间:2019-11-11 14:53:22

标签: sql postgresql

我有一个表patient_details,该表具有ID,diagnostic_date和诊断码。唯一ID可以有多个条目,这意味着它们在不同时间被诊断出患有不同的疾病。

目标:我希望看到最终发展成为疾病代码5.10的患者。因此,我想看看首先被诊断为代码5,然后发展为诊断5.10的患者。我不确定如何确定每个唯一患者的日期,以及谁从最初的诊断5变为最终的5.10。我最终只需要从诊断代码5到5.10的患者人数

表格示例

ID    |diagnosis_date|diagnosis_code
PT2073|2015-02-28    |5
PT2073|2019-02-28    |5.10
PT2013|2015-04-28    |1
PT2013|2017-02-11    |5
PT2013|2017-07-11    |5.10

1 个答案:

答案 0 :(得分:1)

这可能会达到目的:

select id
from patient_details
group by id
having
    min(case when diagnosis_code = 5 then diagnosis_date end)
    < max(case when diagnosis_code = 5.1 then diagnosis_date end)

这将确保:

  • 患者至少有diagnosis_code = 5条记录,而另一条diagnosis_code = 10

  • 他们首次被诊断为代码5的日期小于他们最后被诊断为5.1的日期

Demo on DB Fiddle

样本数据:

id     | diagnosis_date | diagnosis_code
:----- | :------------- | -------------:
PT2073 | 2015-02-28     |           4.00
PT2073 | 2019-02-28     |           5.10
PT2013 | 2015-04-28     |           1.00
PT2013 | 2017-02-11     |           5.00
PT2013 | 2017-07-11     |           5.10

结果:

| id     |
| :----- |
| PT2013 |
相关问题