我有一张表格,其中包含入院日期,出院日期和诊断:
现在,我正在尝试获取过去一年内的再入院人数以及每次遭遇的病史(出院日期+诊断)。结果应如下所示:
我有能力算账,但在历史上挣扎。这是我的代码:
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
我可以帮忙吗?
答案 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