条件LEFT JOIN子句SQL Server其中第二个表中的条件

时间:2015-01-19 11:33:01

标签: sql sql-server join left-join

我有一个视图(v_Flat_DemogTDComps),其中包含以下字段(以及其他字段)

PatientID     Integer
[Start date]  DateTime
SystemicStart DateTime

我还有一张表(Operation):

PatientID                Integer
[Operation/Reason Date]  DateTime
[Surgical]               Boolean
[Operation/Reason Name]  String

我想在v_Flat_DemogTDComps上{@ 1}}左下角加入Operation

  1. PatientID = PatientID AND

  2. 如果[Surgical] = 1 THEN [Operation / Reason Date] = SystemicStart OR  如果[手术] = 0那么[操作/原因日期] = [开始日期]

  3. 最终,我希望选择v_Flat_DemogTDComps中的所有内容以及[Operation/Reason Name]

    我尝试过使用此解决方案并考虑创建两个操作视图(一个Surgical=1和一个Surgical=0):Case statement in Join Clause

    然而,这似乎只适用于条件部分在第一个表中的情况。 v_Flat_DemogTDComps中没有任何内容可以确定我是否应该使用一个操作视图而不是另一个操作视图。

    当条件子句在第二个表中时,如何加入?

1 个答案:

答案 0 :(得分:0)

使用OrAnd运算符来模拟If else。试试这个。

ON v_Flat_DemogTDComps.PatientID = Operation.PatientID
AND ( ( [Surgical] = 1
        AND [Operation/Reason Date] = SystemicStart )
        OR ( [Surgical] = 0
            AND [Operation/Reason Date] = [Start Date] ) )