有条件的 LEFT JOIN 子句 SQL 服务器 where conditionality in second table

Conditional LEFT JOIN clause SQL Server where conditionality in second table

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

PatientID     Integer
[Start date]  DateTime
SystemicStart DateTime

我还有一个 table (Operation) 有:

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

我想 LEFT JOIN v_Flat_DemogTDComps ON Operation where:

  1. PatientID = PatientID AND
  2. (
    如果 [Surgical] = 1 THEN [Operation/Reason Date] = SystemicStart 或 如果 [手术] = 0 那么 [Operation/Reason 日期] = [开始日期]
    )

最终,我想 SELECT v_Flat_DemogTDComps 中的所有内容以及 [Operation/Reason Name]

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

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

当条件子句在第二个时如何加入 table?

使用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] ) )