LEFT JOIN ISNULL

时间:2014-04-30 18:37:17

标签: sql left-join isnull

试图通过几年糟糕的决定清理几个数据库中的混乱。使用下面的示例,我们有一个来自'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)

1 个答案:

答案 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