Eu posso ver um par de opções. A maioria tradução direta parece ser:
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%'
mas o uso de um RIGHT OUTER JOIN
podem ser desconhecidos. Para mudar para o mais familiar LEFT OUTER JOIN
precisamos inverter a posição das tabelas na consulta e alterar a forma como as condições forem apresentados:
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%'
Eu mantive os aliases mesmo assim você pode ver como elas se movem em torno da consulta. Em ambas as consultas m1
é a tabela primária, o que é, é o que deve fornecer os dados, enquanto m2
é secundário ou "opcional" tabela - pode ou não pode ter dados que corresponde ao principal.
Pessoalmente, eu prefiro junta mais de subconsultas como eu encontrá-los mais fáceis de entender, mas YMMV.