Je peux voir un couple d'options. La plus directe de la traduction semble être:
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%'
mais l'utilisation d'un RIGHT OUTER JOIN
peut-être pas familiers. Pour passer de la plus familière LEFT OUTER JOIN
nous devons inverser la position des tables dans la requête et modifier la façon dont les conditions sont présentées:
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%'
J'ai gardé l'alias de la même sorte que vous pouvez voir comment ils se sont déplacés autour de la requête. Dans les deux requêtes m1
est la table principale, qui est, il est le seul qui doit fournir des données, tandis que m2
est le secondaire ou "facultatif" table - il peut ou peut ne pas avoir de données qui correspond à la primaire.
Personnellement, je préfère les jointures sur les sous-requêtes que je les trouve plus facile à comprendre, mais YMMV.