Birkaç seçenek görebiliyorum. En doğrudan çeviri şöyle görünüyor:
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%'
ama bir kullanımı RIGHT OUTER JOIN
yabancı olabilir. Daha tanıdık olana geçmek için LEFT OUTER JOIN
sorgudaki tabloların konumunu tersine çevirmemiz ve koşulların nasıl sunulduğunu değiştirmemiz gerekiyor:
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%'
Takma adları aynı tuttum, böylece sorguda nasıl hareket ettiklerini görebilirsiniz. Her iki sorguda da m1
birincil tablo, yani veri sağlaması gereken tablodur. m2
ikincil veya" isteğe bağlı " tablodur-birincil tabloyla eşleşen verilere sahip olabilir veya olmayabilir.
Şahsen, alt sorgular yerine birleştirmeleri tercih ederim, çünkü onları anlamak daha kolay buluyorum, ancak YMMV.