Я вижу пару вариантов. Наиболее прямым переводом, по-видимому, является:
SELECT CASE
WHEN m2.MATERIAL IS NOT NULL THEN 'Found'
ELSE 'Not Found'
END AS IZZIT_THERE
FROM SCHEMA.MATERIAL_TABLE m2
RIGHT OUTER JOIN SCHEMA.MATERIAL_TABLE m1
ON m1.MATERIAL = m2.MATERIAL
WHERE m1.OLD_MATERIAL LIKE '%55AD%'
но использование RIGHT OUTER JOIN
может быть, незнаком. Чтобы переключиться на более привычное LEFT OUTER JOIN
нам нужно изменить положение таблиц в запросе и изменить способ представления условий:
SELECT CASE
WHEN m1.MATERIAL IS NOT NULL THEN 'Found'
ELSE 'Not Found'
END AS IZZIT_THERE
FROM SCHEMA.MATERIAL_TABLE m1
LEFT OUTER JOIN SCHEMA.MATERIAL_TABLE m2
ON m2.MATERIAL = m1.MATERIAL
WHERE m1.OLD_MATERIAL LIKE '%55AD%'
Я сохранил псевдонимы прежними, чтобы вы могли видеть, как они перемещались в запросе. В обоих запросах m1
является основной таблицей, то есть это та, которая должна предоставлять данные, в то время как m2
является вторичной или "необязательной" таблицей - в ней могут быть или не быть данные, соответствующие основной.
Лично я предпочитаю объединения подзапросам, так как нахожу их более понятными, но YMMV.