首页 > 解决方案 > 患者在首次出院后 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

标签: sqlsql-server

解决方案


任何人都可以帮助找到第一次出院后 30 天内的最短入院日期和最长出院日期吗?

我认为您可以使用分析函数找到第一个放电日期,然后使用聚合函数找到min30max天,如下所示:

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 

推荐阅读