试图通过几年糟糕的决定清理几个数据库中的混乱。使用下面的示例,我们有一个来自'X'的字段,它链接到'Y'中的字段。问题是“X”还用于链接到遗留系统并保存任一系统的记录。 'Z'可能包含一个替代链接,如果第一个连接是NULL,我想要使用它...我失去了如何“有效”地创建这个而不在临时表中运行两个单独的查询?感谢。
FROM dbo.x X
LEFT JOIN (SELECT Y.id, Z.varnum
FROM dbo.y Y
LEFT JOIN dbo.Z
ON Y.id = Z.varnum) W
ON X.id = ISNULL(W.id,W.varnum)
答案 0 :(得分:2)
在select和两个左连接中使用Coalesce函数
SELECT COALESCE(Y.ID, Z.VARNUM) FROM X
LEFT JOIN Y on X.ID = Y.ID
LEFT JOIN Z on X.ID = Z.VARNUM