And*_*Dev 2 t-sql sql-server conditional join
考虑一个简单的连接:
Select TableB.*
From TableA
Inner Join TableB
On TableB.ID = TableA.ID
Run Code Online (Sandbox Code Playgroud)
我想要做的是根据参数决定加入哪个表.虽然以下语法无效,但我写这篇文章只是为了说明我的意思:
Select TableD.*
From TableA
Inner Join
[If @useTableC = 1 Then Join to TableC Else Join to TableB] As TableD
Run Code Online (Sandbox Code Playgroud)
TableB和TableC都具有相同的列.
我怎样才能创建这种连接.请注意,此示例实际上是更大查询的一小部分,因此您不能只使用If ... Else语句.
非常感谢!
通常我更喜欢在多个语句中重写,但如果你真的需要它:
SELECT td.*
FROM TableA ta
JOIN (
SELECT tc.* FROM TableC Where @useTableC = 1
UNION ALL
SELECT tb.* FROM TableB Where @useTableC = 0
) td ON ( /* JOIN CONDITION MISSING */)
Run Code Online (Sandbox Code Playgroud)