SQL Select Case When Kullanımı

Merhabalar;
Bir çogumuz sql sorgularında dönen kayıtlar üzerinde seçim işlemi
yapma gereği duymuşuzdur. Cinsiyet alanına kadın / erkek yazdırmak yerine litaratürde gösterilen şekliyle .T. / .F. yada 0/1 gibi kodlamalar kullanırız. 0 ise kadın 1 ise erkek olarak göster dememiz lazım. Bunun en pratik yolu yazdıgımız programlama dilini kullanmadan sql in kendine yaptırmaktır. Sorgumuzu görünce ne demek istedigimi daha iyi anlayacaksınız.
Hadi ozaman buyrun.

Genel yapısı :

SELECT KolonBaslıgı =
CASE SecilecekALAN
WHEN 'D' THEN 'DÜŞÜNCE'
WHEN 'E' THEN 'EGLENCE'
WHEN 'R' THEN 'RENK'
WHEN 'Y' THEN 'YAŞAM'
WHEN 'A' THEN 'AMAÇ'
ELSE 'Yoksa Neye Yarar Dünya '
END, DigerAlanlar
FROM TabloAdı

Genel kullanımını bu şekilde gösterdikten sonra isterseniz birkaç farklı örnek yapalım.

Müşteri tiplerini kodlara ayırdık. Hangi müşteri hangi statüde bilmek istiyoruz ve yazılım aşamasında verdiğimiz kodların hangisinin hangi manada oldugunu göstermek istiyoruz.

SELECT MUSTIPI=
CASE TIPI
WHEN '1' THEN 'ÜST DÜZEY' WHEN '2' THEN 'ORTA DÜZEY' WHEN '3' THEN 'ALT DÜZEY'
ELSE 'BELİRSİZ MÜŞTERİ TİPİ'
END,ADI As MUSTERI
FROM Musteri

Burda yaptıgımız işlemde sorgu çektik müşterilerin tamamı için müşteri kodlarına baktık 1 ise bunu yaz 2 ise bunu yaz.

SONUÇ:

MUSTIPI MUSTERI
---------- -----------
'ORTA DÜZEY' FATİH
'ORTA DÜZEY' MEHMET
'ÜST DÜZEY' SEDA
'ORTA DÜZEY' EDA

Diğer bir kullanım şekli;

SELECT CASE
WHEN BAKIYE=0 THEN 'RİSK YOK'
WHEN BAKIYE>1 AND BAKIYE <'2' THEN 'DÜŞÜK RİSK'
WHEN BAKIYE>=2 AND BAKIYE<'3' THEN 'ORTA SEVİYELİ RİSK' WHEN BAKIYE>3 OR BAKIYE=3 THEN 'YÜKSEK RİSK'
WHEN BAKIYE BETWEEN 4 AND 10 THEN 'ÇOK YÜKSEK RİSK'
END, m.SOYADI, ym.BAKIYE
FROM Musteri AS m INNER JOIN YMusteri AS ym ON m.ID = ym.M_ID

Başka bir örnek kullanabileceginiz bi çok komut var...

SELECT
CASE
WHEN TIPI IS NULL THEN 'HERHANGI MUSTERİ TIPI'
END AS TIP .........

SQL komutlarını ne kadar etkin biçimde kullanırsanız yazacagınız program o kadar hızlı ve zahmetsiz olur. SQL bize bir çok nimet sunmakta gerisi sizin ihtiyaçlarınıza ve yeteneklerinize kalmış.

Bir sonra ki yazıda görüşmek üzere...

7 yorum

Çok teşekkürler...

Cevapla

her daim unutulma potansiyeli olan çok gerekli sql kullanımı.

Cevapla

her kodtan sonra sonuç ekranın göstersemişsiniz daha iyi olacakmış. ama yinede elinize sağlık

Cevapla

kod tan akrostiş iyiymiş :)

Cevapla

Teşekkürler,
(DERYA Yoksa Neye Yarar Dünya...)

Cevapla

Yorum Gönder