SQL Server中的医院再入院历史

时间:2018-12-27 15:07:28

标签: sql sql-server

我有一张表格,其中包含入院日期,出院日期和诊断:

enter image description here

现在,我正在尝试获取过去一年内的再入院人数以及每次遭遇的病史(出院日期+诊断)。结果应如下所示:

enter image description here

我有能力算账,但在历史上挣扎。这是我的代码:

SELECT
    A.Encounter, A.Patient, A.AdmissionDt, A.DischargeDt, 
    (SELECT COUNT(*) 
     FROM MyTable B 
     WHERE A.Patient = B.Patient 
       AND B.AdmissionDt >= DATEADD(YY, -1, A.DischargeDt) 
       AND B.AdmissionDt < A.DischargeDt) AS Cnt 
FROM
    MyTable A 
ORDER BY
    AdmissionDt DESC

我可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

您可以从相关子查询中获得两个所需的列。

count列仅是同一患者在当前行之前但在去年内的COUNT(*)行。

“历史记录”将是与计数相同的一组行FOR XML concatenation(在当前行之前但在去年内)。

答案 1 :(得分:1)

您可以尝试查询

SELECT A.encounter, 
       A.patient, 
       A.admissiondt, 
       A.dischargedt, 
       (SELECT Count(*) 
        FROM   mytable B 
        WHERE  A.patient = B.patient 
               AND B.admissiondt >= Dateadd(yy, -1, A.dischargedt) 
               AND B.admissiondt < A.dischargedt) AS Cnt, 
        (SELECT  convert (varchar,b.admissiondt) +' - ' + b.diagnosis +'
        '
        FROM   mytable B
        WHERE  A.patient = B.patient 
               AND B.admissiondt >= Dateadd(yy, -1, A.dischargedt) 
               AND B.admissiondt < A.dischargedt  for xml path ('')) as history 
FROM   mytable A 
ORDER  BY admissiondt DESC