【发布时间】:2015-01-28 22:27:00
【问题描述】:
我有一个由 MS Access 中的同事创建的患者实验室数据库,该数据库有 4 个表。
表 1 包含患者人口统计数据(患者 ID、性别、出生日期等)
表 2 包含 Type1(血压、心率)
表 3 包含 Type2(化学面板、血红蛋白等)
表4包含Type3(微生物培养结果)
每个表都有一个共同的内部患者编号。每项措施都可以独立于其他措施进行,并且可能有结果,也可能没有结果。我想要的是一个简单的表,它提取了仅在表 1 中找到的外部患者 ID、性别和出生日期,并结合了其他每个表的结果的日期。我尝试使用 RIGHT 连接,并希望在后续表中的日期不匹配时会有“空”值。相反,我有一个看起来像交叉表查询的结果,每一行都有一个值。显然我没有正确理解 JOINS 的使用。这是我尝试过的:
SET DATEFORMAT dmy
DECLARE @time time(0)
Select DISTINCT
P.PATIENT_ID as 'Patient ID',
P.SEX as 'Sex',
CONVERT(VARCHAR(11),P.DOB) as 'DOB',
CONVERT(VARCHAR,TYPE1.DateTime,101)as 'BP Measure DATES',
CONVERT(VARCHAR,TYPE2.DateTime,101) as 'CHEM Measure DATES',
CONVERT(VARCHAR,TYPE3.DateTime,101) as 'MICRO Measure DATES'
From dbo.PATIENT as P LEFT JOIN dbo.BRACHIALBPS as TYPE1 on P.PATIENT_NO=TYPE1.PATIENT_NO
Right Join dbo.Chemistries as TYPE2 on P.PATIENT_NO=TYPE2.PATIENT_NO
Right Join dbo.Microbiologies as TYPE3 on P.PATIENT_NO=TYPE3.PATIENT_NO
ORDER BY P.PATIENT_ID
我正在使用 SQL Server 2008 导入数据并执行查询。
正如我所提到的,我希望每个患者/每个结果日期有一行。 但是对于每个日期组合,我都会得到多行。
提前感谢您的指导!
【问题讨论】:
标签: sql-server-2008 join