首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在第一集中显示患者的前两个诊断,但在同一行

在第一集中显示患者的前两个诊断,但在同一行
EN

Stack Overflow用户
提问于 2018-06-01 23:22:13
回答 1查看 32关注 0票数 0

我想在第一集中显示患者的前两个诊断,但在同一行。有时患者没有两个诊断,因此需要返回null或空白。诊断表字段为Patid、Epno (剧集编号)、DiagNo、diagcode。我想这样显示结果: Patientno1 EpNo 1 Diagno1 DiagCode,Diagno2 Diagcode。

示例:

代码语言:javascript
复制
Patient 123456 epno 1 DiagNo1 diagcode = W234 DiagNo2 Diagcode = e3456.  
Patient 890765 epno 1 diagNo1 diagcode = R345 (No second diagnosis)

我已经尝试过自连接,但无法克服患者2没有第二次诊断的问题。下面的脚本(拼写表为我定义了日期周期)。

代码语言:javascript
复制
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。我已经用谷歌搜索过很多次了!任何帮助,非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2018-06-01 23:39:43

你似乎想要:

代码语言:javascript
复制
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 DISTINCTGROUP BY都不是必需的。
  • 我不认为您的查询中包含所有必需的联接条件。
  • where子句撤消外部联接。
  • 使用标准日期格式,如YYYY-MM-DD。<代码>H218<代码>F219
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50646635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档