Kenan kılıçaslan

  • Baca Hesabı
  • Sürtünme Kaybı
  • Diferansiyel Denklem
  • Denklem Çözümü
SQL Server

CASE Deyimi

Sadece SELECT, UPDATE, DELETE sorgusu içinde kullanılır. Bağımsız olarak kullanılamaz.

CASE iki şekilde yazılabilir

1. yazım şekli

SQL server’da ise
CASE degisken
    When değer1 then sonuc1
    When değer2 then sonuc2
    ...
    Else ...
End
Örnek,
CASE cinsiyet
    WHEN 1 THEN 'Erkek'
    WHEN 2 THEN 'Kız'
    ELSE 'Bilinmiyor'
END

Sorgulanan, cinsiyet değeri 1 ise sonuç Erkek, 2 ise sonuç kız, farklı veya NULL ise Bilinmiyor sonucunu üretir.

İkinci yazım şekli

CASE 
    When koşul1 then sonuc1
    When koşul2 then sonuc2
    ...
    Else ...
End
CASE
    WHEN cinsiyet=1 THEN ‘Erkek’
    WHEN cinsiyet=2 THEN ‘Kız’
    ELSE ‘Bilinmiyor’
END

Örnek: personel tablosunu listeleyiniz, listede cinsiyet yerine , cinsiyet değeri 1 ise erkek, 2 ise kız yazsın

SELECT *, 
    CASE cinsiyet
        WHEN 1 THEN 'Erkek'
        WHEN 2 THEN 'Kız'
    END as cinsiyet_yazi
FROM Personel

Örnek: personel tablosunu listeleyiniz, maas değeri 1000 az ise Maaş Az, 1000-1500 arasında ise maaş orta, 1500’den maaş çok yazsın.

SELECT *,
    CASE
        WHEN maas<1000 THEN 'maaş az'
        WHEN maas between 1000 and 1500 THEN 'maaş orta'
        WHEN maas>1500 THEN 'maaş çok'
    END as maas_durumu
FROM personel 

Örnek: personel tablosunu listeleyiniz. Departman değeri 10 ise pazarlama, 12 ise üretim, her ikisi değilse ‘ihracat’ yazsın.

1. tip case ile yazalım.

SELECT *, 
    CASE departman
        WHEN 10 THEN 'Pazarlama'
        WHEN 12 THEN 'Üretim'
        ELSE 'İhracat'
    END as departman_adi
FROM personel

2. tip case ile yazalım.

SELECT *, 
    CASE 
        WHEN departman =10 THEN 'Pazarlama'
        WHEN departman =12 THEN 'Üretim'
        ELSE 'İhracat'
    END as departman_adi
FROM personel

Hangi case ifadesini kullanacağımızı nasıl tespit ederiz?

-- Eğer dallanma sabit bir değere bağlı ise hem birinci, hem de ikinci case ifadesini kullanabiliriz.

-- Eğer dallanma bir koşula, bir aralığa bağlı ise ikinci tip case kullanmalıyız.

beyaz_sayfa_en_alt_oval