根据列值动态决定连接表

you*_*gul 2 sql sql-server dynamic inner-join

我想要动态内连接表,这是我的 SQL 查询

Update temp
Set temp.Order_Id = parent.ID

from #TempTransactions AS temp

Inner Join (case when temp.OrderType = 1 then preorders else orders end)  AS parent

ON parent.Cloud_Id = temp.Order_Id
Run Code Online (Sandbox Code Playgroud)

我是否可以通过上述方式或任何其他替代方式来决定?

如果是,怎么办?

DVT*_*DVT 5

两个左连接就可以了。

Update temp Set temp.Order_Id = COALESCE(p.ID, o.ID)

from #TempTransactions AS temp

LEFT Join preorders p ON p.Cloud_Id = temp.Order_Id AND temp.OrderType=1
LEFT JOIN orders o ON o.Cloud_Id = temp.Order_Id AND (temp.OrderType <> 1 OR temp.OrderType IS NULL)
WHERE COALESCE(p.ID, o.ID) IS NOT NULL
Run Code Online (Sandbox Code Playgroud)