sql - 患者在首次出院后 30 天内再次入院(共 31 天)
问题描述
我的一个表中有以下样本数据,我想找到“如果出院后在第一次出院后 30 天(总共 31 天)内重新入院,请使用第一次入院的入院日期和出院日期最后一次放电”。
PatientId ClaimId Admit Date Discharge Date
A001 110001 12/20/2019 1/17/2020
A001 110002 4/30/2020 4/30/2020
A001 110003 4/18/2020 4/30/2020
A001 110004 5/1/2020 5/5/2020
A001 110005 5/8/2020 5/27/2020
A001 110006 8/22/2020 9/20/2020
A001 110007 9/2/2020 9/5/2020
A001 110008 9/21/2020 10/20/2020
A001 110009 10/21/2020 11/19/2020
A001 110010 9/2/2020 9/5/2020
我试过这种方式,但我只能得到最短的录取日期。不知道如何找到第一次出院后 30 天内的最长出院日期。感谢帮助。
SELECT A.PatientId,
A.Discharge_Date,
Min(B.Admit_Date) AS MinOfadmitDate,
DATEDIFF(dd,A.Discharge_Date,Min(B.Admit_Date)) AS Day_span
FROM Table1 A
INNER JOIN Table1 AS B ON A.PatientId = B.PatientId
WHERE B.Admit_Date > A.Discharge_Date
GROUP BY A.PatientId, A.Discharge_Date
HAVING DATEDIFF(dd,A.Discharge_Date, Min(B.Admit_Date))<=30
解决方案
任何人都可以帮助找到第一次出院后 30 天内的最短入院日期和最长出院日期吗?
我认为您可以使用分析函数找到第一个放电日期,然后使用聚合函数找到min
30max
天,如下所示:
select t.patientid,
min(admit_date) as min_Admit_date,
max(discharge_date) as max_discharge_date
from (select t.*,
min(discharge_date) over (partition by patientid) as min_d_date
from your_table t) t
where dateadd(d,30,min_d_date) > admit_date
推荐阅读
- linux - 如何在linux中合并两个文件并只保留一个文件中的行?
- prestashop - 在产品页面中显示含税和不含税的价格
- three.js - 在显卡中创建具有相同几何和材质的多个网格是否会重复数据?
- django - 用户无法通过自定义登录模型 django 登录
- java - 如何结合这两个地图条件
- mongodb - Mongodb移动集合中的项目
- django - Django MultipleChoiceField 在没有 li 标签的情况下渲染每个项目/或使用引导程序渲染它们
- javascript - 为什么使用 JS 更改嵌入式 svg 与外部 css 的属性会失败
- javascript - 检查鼠标是在窗口内还是在窗口外
- python-3.x - 仅在值不为空或不是空字符串的行上应用 UDF 不能按预期工作