有条件的 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:
PatientID = PatientID AND
(
如果 [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?
使用Or
和And
运算符来模拟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] ) )
我有一个视图 (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:
PatientID = PatientID AND
(
如果 [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?
使用Or
和And
运算符来模拟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] ) )