在 Teradata 中,SQL 用于计算出院后 30 天内急诊就诊次数的代码

In Teradata, SQL Code to count the number of Emergency Visits within 30 days of leaving a hospital

有人要求我总结出院后 30 天内他们去急诊室的次数。我可以做一个基本的SQL查询并导出到Excel并在做一些手动计算后折腾到pivot,但我想知道是否可以全部写在SQL中?

基本查询是这样的:

SELECTPatient_ID,记录#,站点,Admit_Date,Discharge_Date 从招生 在“2019-01-01”和“2019-12-31”之间 Admit_Date

我希望能够仅对 [Site] = 'Hospital' 在查询中离开医院后 30 天内仅访问 ER 的行进行 SUM,以生成另外两个列:

输出可能如下所示:

Sample Results

我用 Google 搜索了很多次,但找不到可以组合多种解决方案的答案。我认为我可能必须至少执行两个子查询,但不确定将其嵌入何处。任何意见,将不胜感激。谢谢!

您需要嵌套的 OLAP 函数,这应该 return 预期结果:

SELECT dt.*
  ,CASE
     WHEN site = 'Hospital'
     THEN Count(CASE WHEN site = 'ER' AND "Days Since Hospital Discharge"  <= 30 THEN 1 END)
          Over (PARTITION BY Patient_ID 
                ORDER BY Discharge_Date, Admit_Date
                RESET WHEN site = 'Hospital')
   END AS "ER Visits Within 30 Days After Hospital Discharge and Until Next Hospital Admit"

FROM
 ( 
   SELECT Patient_ID, Record#, Site, Admit_Date, Discharge_Date
     ,CASE
        WHEN site <> 'Hospital'
        THEN Admit_Date -
             -- the previous discharge date
             Max(CASE WHEN site = 'Hospital' THEN Discharge_Date END)
             Over (PARTITION BY Patient_ID 
                   ORDER BY Discharge_Date, Admit_Date
                   ROWS Unbounded Preceding)
      END AS "Days Since Hospital Discharge" 
   FROM Admissions 
   WHERE Admit_Date BETWEEN DATE '2019-01-01' AND DATE '2019-12-31'
 ) AS dt

顺便说一句,如果数据以创建 Table + 插入而不是 jpeg

的形式提供,会更容易提供帮助