我正在处理这样一种情况,即基于特定的诊断,我只需要为患者提取一条记录。在这种情况下,一个患者可以有多个诊断,这些诊断被列为current_icd10_list,而每个诊断都是在一次访问中完成的,可以通过联系日期来辨别。在这种情况下,一个患者可以在不同的时间被诊断出多个相似类型的诊断,但我只需要拉出最新的一个。在我的例子中,假设我有一个病人,他先被诊断出患有Dx 1,后来又被诊断为Dx 2 at。我只想得出最新的诊断结果,那就是Dx 2。我该怎么做呢?
select
CONTACT_DATE,
WHEN current_icd10_list LIKE '%E10.0%'
...
OR current_icd10_list LIKE '%E14.9%'
THEN 'Dx 1'
WHEN current_icd10_list LIKE '%E10.2%'
...
OR current_icd10_list LIKE '%E14.7%'
THEN 'Dx 2'
END AS 'Dx Group'发布于 2019-10-15 06:43:32
我只需要根据特定的诊断为一个病人拉出一条记录...一个病人可以有多个诊断。但我只需要调出最新的。
为此,您将使用row_number()。假设患者的id存储在列patient_id中,就诊日期存储在contact_date中
select *
from (
select
t.*,
row_number() over(partition by patient_id order by contact_date desc) rn
from mytable t
) x
where rn = 1发布于 2019-10-15 08:18:53
难道你不能根据你的current_icd10_list标准,使用最大日期函数来拉取数据吗?例如:
select max(CONTACT_DATE) as max_date,
case WHEN current_icd10_list LIKE '%E10.0%'
OR current_icd10_list LIKE '%E14.9%'
THEN 'Dx 1'
WHEN current_icd10_list LIKE '%E10.2%'
OR current_icd10_list LIKE '%E14.7%'
THEN 'Dx 2'
END AS 'Dx Group'
from mytable
group by
case WHEN current_icd10_list LIKE '%E10.0%'
OR current_icd10_list LIKE '%E14.9%'
THEN 'Dx 1'
WHEN current_icd10_list LIKE '%E10.2%'
OR current_icd10_list LIKE '%E14.7%'
THEN 'Dx 2'
END
; 发布于 2019-10-16 03:31:13
因此,我解决了这个问题,将“Dx组”中有Dx的患者分离出来,并使用row_number按contact_date对它们进行排序。然后,我将其与其余数据结合起来。
https://stackoverflow.com/questions/58384798
复制相似问题