LEFT JOIN ISNULL

пытаясь очистить беспорядок в паре баз данных из нескольких лет неудачных решений. Используя мой пример ниже, у нас есть поле из "X", которое ссылается на поле из "Y". Проблема в том, что "X" также использовался для ссылки на устаревшую систему и содержит запись для любой системы. "Z" может содержать альтернативную ссылку, которую я хочу использовать, если первое соединение NULL... Я потерял способ создания этого "эффективно" без запуска двух отдельных запросов в таблицу temp? Благодарю.

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 ответ

Используйте функцию Coalesce в select и два левых соединения

SELECT COALESCE(Y.ID, Z.VARNUM) FROM X
LEFT JOIN Y on X.ID = Y.ID
LEFT JOIN Z on X.ID = Z.VARNUM

licensed under cc by-sa 3.0 with attribution.