You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询出院后30天内再入院的首入末次出院日期?

解决首次出院后30天内再入院的集群分组问题

你的需求核心是把同一患者在首次出院后30天内连续发生的入院/出院事件归为一个集群,然后提取每个集群的最早入院日期和最晚出院日期。当前的SQL只关联了单次出院和下一次入院,没法覆盖连续多次在30天窗口内的入院事件,所以需要用窗口函数来实现集群分组。

解决思路

我们可以通过以下步骤实现:

  1. 对每个患者的入院记录按入院日期排序,确保时间顺序正确。
  2. 判断当前入院是否属于上一个出院事件的30天窗口内,以此划分集群。
  3. 为每个集群分配唯一ID,最后按集群分组提取所需日期。

完整SQL实现(以SQL Server为例)

WITH RankedAdmissions AS (
    -- 第一步:按患者ID和入院日期排序,获取前一次出院日期
    SELECT 
        PatientId,
        [Admit Date],
        [Discharge Date],
        -- 获取同一患者前一条记录的出院日期
        LAG([Discharge Date]) OVER (PARTITION BY PatientId ORDER BY [Admit Date]) AS Prev_Discharge_Date,
        -- 判断当前入院是否在前一次出院的30天内,标记是否开启新集群
        CASE 
            WHEN DATEDIFF(dd, LAG([Discharge Date]) OVER (PARTITION BY PatientId ORDER BY [Admit Date]), [Admit Date]) <= 30 
            THEN 0 
            ELSE 1 
        END AS Is_New_Cluster
    FROM Table1
),
ClusterGroups AS (
    -- 第二步:累加标记值生成唯一集群ID
    SELECT 
        PatientId,
        [Admit Date],
        [Discharge Date],
        SUM(Is_New_Cluster) OVER (PARTITION BY PatientId ORDER BY [Admit Date] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS Cluster_Id
    FROM RankedAdmissions
)
-- 第三步:按患者和集群分组,提取目标日期
SELECT 
    PatientId,
    MIN([Admit Date]) AS First_Admit_Date,
    MAX([Discharge Date]) AS Last_Discharge_Date
FROM ClusterGroups
GROUP BY PatientId, Cluster_Id
ORDER BY PatientId, First_Admit_Date;

关键步骤解释

  1. RankedAdmissions CTE:

    • 用LAG函数获取同一患者的上一次出院日期,实现当前入院与前次出院的时间对比。
    • Is_New_Cluster字段标记当前记录是否属于新集群:若当前入院与前次出院间隔超过30天则标记为1,否则为0。
  2. ClusterGroups CTE:

    • 用SUM窗口函数累加Is_New_Cluster值,同一集群内的记录会获得相同的Cluster_Id,新集群会自动累加生成新ID,完成集群的唯一标识。
  3. 最终查询:

    • 按患者ID和集群ID分组,直接提取每个集群的最早入院日期和最晚出院日期,完全匹配你的需求。

针对样本数据的输出结果

对于你提供的A001样本数据,执行上述SQL后会得到以下结果:

PatientIdFirst_Admit_DateLast_Discharge_Date
A00112/20/20191/17/2020
A0014/18/20205/27/2020
A0018/22/202011/19/2020

可以看到:

  • 4/18/2020到5/27/2020之间的所有入院/出院都被归为一个集群(间隔均在30天内)。
  • 8/22/2020到11/19/2020的连续入院也被正确归为一个集群。

内容的提问来源于stack exchange,提问作者Jaggi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:30:17