首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否从多条件case表达式中拉取最新记录?

是否从多条件case表达式中拉取最新记录?
EN

Stack Overflow用户
提问于 2019-10-15 06:27:22
回答 3查看 42关注 0票数 0

我正在处理这样一种情况,即基于特定的诊断,我只需要为患者提取一条记录。在这种情况下,一个患者可以有多个诊断,这些诊断被列为current_icd10_list,而每个诊断都是在一次访问中完成的,可以通过联系日期来辨别。在这种情况下,一个患者可以在不同的时间被诊断出多个相似类型的诊断,但我只需要拉出最新的一个。在我的例子中,假设我有一个病人,他先被诊断出患有Dx 1,后来又被诊断为Dx 2 at。我只想得出最新的诊断结果,那就是Dx 2。我该怎么做呢?

代码语言:javascript
复制
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'
EN

回答 3

Stack Overflow用户

发布于 2019-10-15 06:43:32

我只需要根据特定的诊断为一个病人拉出一条记录...一个病人可以有多个诊断。但我只需要调出最新的。

为此,您将使用row_number()。假设患者的id存储在列patient_id中,就诊日期存储在contact_date

代码语言:javascript
复制
select *
from (
    select
        t.*,
        row_number() over(partition by patient_id order by contact_date desc) rn
    from mytable t
) x
where rn = 1
票数 0
EN

Stack Overflow用户

发布于 2019-10-15 08:18:53

难道你不能根据你的current_icd10_list标准,使用最大日期函数来拉取数据吗?例如:

代码语言:javascript
复制
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
 ; 
票数 0
EN

Stack Overflow用户

发布于 2019-10-16 03:31:13

因此,我解决了这个问题,将“Dx组”中有Dx的患者分离出来,并使用row_number按contact_date对它们进行排序。然后,我将其与其余数据结合起来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58384798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档