Во внешнем объединении при перемещении предикатов из предложения ON
в предложение WHERE
необходимо разрешить записи, в которых объединение не дает совпадений, и поэтому все столбцы из внешней таблицы будут иметь значение NULL
.
У меня нет опыта работы с DB2, поэтому могут быть другие тонкости, о которых я не знаю, но именно так я бы переписал запрос. Проверка на NULL
в столбце соединения является прямым индикатором того, было ли соединение найдено совпадением.
SELECT ... FROM table1 AS tb1
LEFT JOIN Table2 AS tb2
ON tb1.x = tb2.x
WHERE tb2.x IS NULL
OR (tb2.y = 2 AND tb2.z = 3)