我想在第一集中显示患者的前两个诊断,但在同一行。有时患者没有两个诊断,因此需要返回null或空白。诊断表字段为Patid、Epno (剧集编号)、DiagNo、diagcode。我想这样显示结果: Patientno1 EpNo 1 Diagno1 DiagCode,Diagno2 Diagcode。
示例:
Patient 123456 epno 1 DiagNo1 diagcode = W234 DiagNo2 Diagcode = e3456.
Patient 890765 epno 1 diagNo1 diagcode = R345 (No second diagnosis)我已经尝试过自连接,但无法克服患者2没有第二次诊断的问题。下面的脚本(拼写表为我定义了日期周期)。
SELECT distinct
d1.PatID
,d1.diagno
,d1.DiagCode
,d1.DiagDesc as d1
,d2.diagno
,d2.DiagCode
,d2.DiagDesc AS d2
FROM spell s
left JOIN diagnosis d1 ON s.AdmNo = d1.AdmNo
right JOIN diagnosis d2 ON d1.AdmNo = d2.AdmNo AND d2.EpNo = d1.epno
WHERE s.AdmDate>= '25-may-2018'
AND d1.EpNo = 1 AND d1.DiagNo = 1 AND d2.EpNo = 1
GROUP BY
d1.PatID
,d1.diagno
,d1.DiagCode
,d1.DiagDesc
,d2.diagno
,d2.DiagCode
,d2.DiagDesc我使用的是SQLServer管理Studio2007。我已经用谷歌搜索过很多次了!任何帮助,非常感谢。
发布于 2018-06-01 23:39:43
你似乎想要:
SELECT d1.PatID, d1.diagno, d1.DiagCode, d1.DiagDesc as d1,
d2.diagno, d2.DiagCode, d2.DiagDesc AS d2
FROM spell s LEFT JOIN
diagnosis d1
ON s.AdmNo = d1.AdmNo AND d1.EpNo = 1 and d1.diagno = 1 LEFT JOIN
diagnosis d2
ON s.AdmNo = d2.AdmNo AND d2.EpNo = d1.epno AND d2.diagno = 2 and d2.EpNo = 1
WHERE s.AdmDate >= '2018-05-25';您似乎将多个诊断存储在diagnosis中,使用diagno来区分它们。
备注:
RIGHT JOIN几乎从来没有用过。只需使用您所描述的内容,SELECT DISTINCT和GROUP BY都不是必需的。where子句撤消外部联接。https://stackoverflow.com/questions/50646635
复制相似问题