首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >找到满足特定条件的最小日期,然后取差值

找到满足特定条件的最小日期,然后取差值
EN

Stack Overflow用户
提问于 2019-11-13 00:47:51
回答 1查看 32关注 0票数 0

我有一个表,里面有ID,诊断代码和诊断日期。一个独特的患者可以有多个诊断日期和代码。

代码语言:javascript
运行
复制
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。

我试过了:

代码语言:javascript
运行
复制
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。

EN

回答 1

Stack Overflow用户

发布于 2019-11-13 05:18:46

这感觉像是window functions...which的一个很好的用例,它将允许您根据所查找的条件保留整行数据,而不是仅仅返回ids,这是您目前遇到的问题。

既然你用红移标记了这个,check out these docs

但基本上,我会:

  • 取出每个患者和代码组合的“首次诊断日期”(使用按患者id和代码划分的行号,按日期说明排序)
  • 针对每个患者,根据该日期差异的值计算您在
  • 中关心的代码的日期差异,并计算该组的计数

所以我猜这看起来像是一个子查询来做行号,然后至少有一个外部查询做过滤/计数。

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

https://stackoverflow.com/questions/58823168

复制
相关文章

相似问题

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