SQL - Case When Then End Yapısı

SQL ile aynı zamanda raporlama yapabiliriz. Örneğin yurtdışından gelen veriler İngilizce, bunları Türkçe'ye çevirip raporlama yapabiliriz. Aynı zamanda belli kriterlere göre istediğimiz yazıyı döndürebiliriz.

Case-When-Then yapısı bu işe yarar.

Syntax
  • Case When Then in sonunda kesinlikle End olur
  • If gibi bütün ihtimalleri tek tek dolanmaz uyana girer direk veriyi alıp çıkar.
  • When tarafında yazdığımız sorguyu Then'de dönecek veri için bir koşul olarak düşünebilirsiniz.
  • Case ile End arasında yazdığımız sorgu ayrı bir kolonda yazdırılır. Veritabanında bir kolon olmayıp raporlama için kullanılır.
SELECT kolonadı1,kolonadı2,
    CASE 
    WHEN 'kolondaki değer'
    THEN 'göstermek istediğimiz değer' 
    END as sonuc
FROM tabloadı

Örnekler

Northwnd veritabanında çalışanlar tablosundaki ülkeler kolonunun Türkçesini döndüren sorgumuz.
ELSE'in anlamı bu sorguladığımız ülkeler dışında tabloda veri varsa "Bilinmiyor" yazdıracak.

SELECT FirstName+' '+ LastName as FullName,Country , CASE
WHEN Country='usa' then 'Amerika'
WHEN Country='uk' then 'Birleşik Krallık'
WHEN Country='France' then 'Fransa'
ELSE 'Bilinmiyor'
END
FROM Employees

Sorgu sonucumuz

Bu örnekte Northwnd veritabanındaki Ürünler tablosundaki stok miktarına göre raporlama yaptık. Stok miktarı 50 ve altında olursa "Kritik", 51 ile 75 arası "Normal", 75'ten fazla ise "Stok Fazla" yazdıracak bu sorgu sonucu kolon adımız da "Stok Durumu" olsun as ile alias olarak belirttik.

SELECT ProductName,UnitsInStock, 
CASE
WHEN UnitsInStock<=50 then 'Kritik'
WHEN UnitsInStock between 51 and 75 then 'Normal'
WHEN UnitsInStock>75 then 'Stok fazla' 
END as 'Stok Durumu'
FROM Products

Sorgu Sonucumuz
                                     



Yorumlar