【发布时间】:2018-06-01 23:45:11
【问题描述】:
我想在第一集中显示患者的前两个诊断,但在同一行。有时患者没有两次诊断,因此需要返回 null 或空白。诊断表字段为 Patid、Epno(情节编号)、DiagNo、diagcode。我想显示结果:Patientno1 EpNo 1 Diagno1 DiagCode,Diagno 2 Diagcode。
例子:
Patient 123456 epno 1 DiagNo1 diagcode = W234 DiagNo2 Diagcode = e3456.
Patient 890765 epno 1 diagNo1 diagcode = R345 (No second diagnosis)
我已经尝试了 selfjoins,但无法解决患者 2 没有第二次诊断的问题。下面的脚本(Spell 表为我定义了日期期间)。
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 management Studio 2007。我已经在 Google 上搜索过很多次了!任何帮助,不胜感激。
【问题讨论】:
-
将右连接更改为左连接。还将谓词移动到连接。当您将它们放在 where 子句中时,您的外连接在逻辑上已成为内连接。如果这不能解决问题,那么您需要向我们提供一些详细信息。 spaghettidba.com/2015/04/24/…
-
样本数据和期望的结果会有所帮助。
-
样本数据和期望的结果会有所帮助。
标签: sql sql-server