Posso vedere un paio di opzioni. Il più diretto traduzione sembra essere:
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%'
ma l'uso di un RIGHT OUTER JOIN
può essere sconosciuto. Per passare al più familiare LEFT OUTER JOIN
abbiamo bisogno di invertire la posizione delle tabelle nella query e modificare come le condizioni sono presentati:
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%'
Ho mantenuto l'alias lo stesso, così si può vedere come si sono spostati nella query. In entrambe le query m1
è la tabella primaria, che è quella che deve fornire i dati, mentre m2
è secondario o "facoltativo" tabella si può o non si dispone di dati che corrisponde alla primaria.
Personalmente, preferisco che si inserisce nella sottoquery come li trovo più facili da capire, ma YMMV.