web*_*orm 1 sql sql-server if-statement join
我有一张包含三条患者信息的表格.
Diagnosis_ID Patient_ID Diagnosis_Code
====================================================
1 Jenkins, Sam A743
2 Smith, Fred D638
3 Doe, John G732
Run Code Online (Sandbox Code Playgroud)
我想查询此表,但还添加第三列"诊断描述",该列链接到另一个表中的诊断代码.
Diagnosis_ID Patient_ID Diagnosis_Code Diagnosis_Description
=============================================================================
1 Jenkins, Sam A743 Sleep Apnea
2 Smith, Fred D638 High Blood Pressure
3 Doe, John G732 Dislocated Joint
Run Code Online (Sandbox Code Playgroud)
通常我可以只JOIN给涉及表Diagnosis_Code来Diagnosis_Description,我会好到哪里去.然而,这并不容易.值的值Diagnosis_Description位于三个可能的表中的一个中.确定我需要加入哪个表取决于Diagnosis_ID是什么.
所以我当前要做的就是每个Diagnosis_ID我必须查询另一个表,告诉我哪个表需要基于Diagnosis_Level加入Diagnosis_Code,然后一旦我有,我就可以得到Diagnosis_Description.这是一些我希望描述过程的"伪代码".
SELECT DiagnosisLevel FROM DiagnosisDetail WHERE Diagnosis_ID = 1
If DiagnosisLevel = "DiagnosisTable1" Then
SELECT Diagnosis_Description FROM DiagnosisTable1 WHERE Diagnosis_Code = 'A743'
ElseIf DiagnosisLevel = "DiagnosisTable2" Then
SELECT Diagnosis_Description FROM DiagnosisTable2 WHERE Diagnosis_Code = 'A743'
ElseIf
SELECT Diagnosis_Description FROM DiagnosisTable3 WHERE Diagnosis_Code = 'A743'
End If
Run Code Online (Sandbox Code Playgroud)
我不知道如何在SQL中完成所有这些.它甚至可能还是我必须在代码中完成所有操作(即C#)?
如果这看起来很模糊,我道歉.我尽力创建一个简单的例子来演示这个问题.我没有设计这个数据库,但必须在其结构中工作.
多个LEFT JOIN?对于主表中的每一行,这将选择适当的LEFT JOIN到正确的DiagnosisTable上
SELECT
T.*,
COALESCE(D1.Diagnosis_Description, D2.Diagnosis_Description, D3.Diagnosis_Description)
FROM
MyTable T
LEFT JOIN
DiagnosisTable1 D1 ON T.Diagnosis_Code = D1.Diagnosis_Code
AND T.DiagnosisLevel = 'DiagnosisTable1'
LEFT JOIN
DiagnosisTable2 D2 ON T.Diagnosis_Code = D2.Diagnosis_Code
AND T.DiagnosisLevel = 'DiagnosisTable2'
LEFT JOIN
DiagnosisTable3 D3 ON T.Diagnosis_Code = D3.Diagnosis_Code
AND T.DiagnosisLevel = 'DiagnosisTable3'
Run Code Online (Sandbox Code Playgroud)