Eu pot vedea o serie de opțiuni. Cel mai direct traducere pare a fi:
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%'
dar utilizarea unui RIGHT OUTER JOIN
poate fi necunoscut. Pentru a comuta la mai familiar LEFT OUTER JOIN
trebuie să inversăm poziția de tabele în interogare și modifica modul în care sunt prezentate condițiile:
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%'
Am păstrat pseudonime aceeași astfel încât să puteți vedea cum s-au mutat în jurul valorii de în interogare. În ambele interogări m1
este primar de masă, care este, acesta este cel care trebuie să furnizeze date, în timp ce m2
este secundară sau "optional" masa - acesta poate sau nu poate avea date care se potrivește primar.
Personal, prefer reunește peste subinterogari cum le-am găsit mai ușor de înțeles, dar YMMV.