背景:医疗保健诊所有2个表:一个是患者就诊,另一个是患者预约。它们不是1:1;可以在没有预约的情况下预约,或者无需预约就诊。两个表的标识符是遭遇ID enc_ID。我正在尝试将这些表格连接在一起并引入患者姓名。
访问表(V)的简要示例:
enc_ID Visit_date Patient_ID
1 2018-06-01 10
2 2018-06-02 11
预约数据(A):
enc_ID Appointment_time Patient_ID
1 2018-06-01 13:00 10
3 2018-06-03 14:00 12
在visit_ID上外连接这些会产生如下内容:
enc_ID V.Visit_date A.Appointment_time V.Patient_ID A.Patient_ID
1 2018-06-01 2018-06-01 13:00 10 10
2 2018-06-02 NULL 11 NULL
3 NULL 2018-06-03 14:00 NULL 12
假设我想基本结合V.Patient_ID和A.Patient_ID,并从另一个表(P)中提取患者姓名,并加入Patient_ID。所需的输出:
enc_ID V.Visit_date A.Appointment_time Patient_ID Patient_Name
1 2018-06-01 2018-06-01 13:00 10 Patient A
2 2018-06-02 NULL 11 Patient B
3 NULL 2018-06-03 14:00 13 Patient C
如何实现这一目标?我可能遗漏了一些明显的东西,但我不知道如何加入P.Patient_Name而不必将其加入V.Patient_ID或A.Patient_ID,其中任何一个都会导致患者姓名为空。
提前致谢!
答案 0 :(得分:4)
只要两个表中的enc_ID都不可为空,您就可以将这些字段与COALESCE
组合:
SELECT
COALESCE(V.Patient_ID, A.Patient_ID) AS enc_ID,
V.Visit_date,
A.Appointment_time,
COALESCE(V.Patient_ID, A.Patient_ID) AS Patient_ID,
P.Patient_Name
FROM V
FULL JOIN A ON V.enc_ID = A.enc_ID
INNER JOIN P
ON P.Patient_ID = V.Patient_ID
OR P.Patient_ID = A.Patient_ID
-- ON P.Patient_ID = COALESCE(V.Patient_ID, A.Patient_ID) also works
答案 1 :(得分:0)
您可以使用ISNULL
加入表格P.
...(Your outer join query)
LEFT JOIN P
ON P.Patient_ID = ISNULL(V.Patient_ID, A.PatientID)