Widzę kilka opcji. Najbardziej bezpośrednim tłumaczeniem, najwyraźniej, jest:
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%'
ale korzystanie z RIGHT OUTER JOIN
być może nie znał. Aby przełączyć się na bardziej znane LEFT OUTER JOIN
musimy zmienić położenie tabel w kwerendzie i zmienić sposób prezentacji warunków:
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%'
Zachowałem aliasy takie same, więc można zobaczyć, jak poruszały się w zapytaniu. W obu zapytaniach m1
jest główną tabelą, czyli ta, która powinna dostarczyć dane, podczas gdy m2
jest drugorzędny lub "zbędne" tabeli - w niej mogą być lub nie być dane, odpowiadające głównym.
Osobiście wolę zjednoczenia подзапросам, ponieważ uważam je bardziej zrozumiałe, ale YMMV.