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
Ö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.
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.
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
Yorum Gönder