SQL Eğitim Serisi 9 – Case When İfadeleri

Case ifadesi ile sorgu sonucu döndürülen değerlere bir veya daha fazla koşul atanabilmektedir.

Excel’de bulunan IF Else fonksiyonunun SQL tarafındaki eşdeğeri Case When olarak kabul edilir.

Case’e fonksiyon değil de ifade ya da işlev denmesinin sebebi aslında IF fonksiyonu gibi tek başına çalışamamasından kaynaklanmaktadır. Sorgu içinde kullanılması gerekmektedir.

Sorgu içinde SELECT, ORDER BY, HAVING ve GROUP BY gibi birçok farklı komut ile kullanılabilir.

CASE den sonra WHEN THEN ikilemesi en az bir kere mutlaka kullanılmalıdır. Her CASE başlangıcı bir END ile bitmelidir.

ELSE ifadesi kullanılması zorunlu değildir.

ELSE kullanılmadığı zaman, karşılaştırılan değer hiçbir koşulla uyuşmazsa sonucu NULL olarak döndürür. Bu yüzden NULL ifade ihtimali olan durumlarda, sonucu NULL olarak görmek istemiyorsak ELSE kullanılması daha yararlı olacaktır.

Case ifadelerinin Simple Case ve Searched Case olarak bilinen iki formu vardir.

(Syntaxlara eklenilen AS Alias kullanılmak zorunda değildir. Oluşturulan kolonun ismini ifade eder.)

Simple Case

CASE alan

WHEN ifade THEN sonuç1

WHEN ifade THEN sonuç2

ELSE sonuçN

END   AS Alias

Örnek:

Aşağıdaki örnekte, resimdeki bilgiden yararlanarak RegionId değerlerine göre Description alanını yazması sağlandı.

SELECT TerritoryDescription,RegionID,

CASE RegionID

WHEN 1 THEN ‘Eastern’

WHEN 2 THEN ‘Western’

WHEN 3 THEN ‘Northern’

WHEN 4 THEN ‘Southern’

END AS RegionDescription

FROM Territories

CASE den sonra yazılan alan kontrol edilecek alandır. Burada RegionId değeri kontrol edildiği için o yazmaktadır.

RegionIDd 1 ise, RegionDescription alanında Eastern yazar. İfadenin devamına bakmaz.

Değilse;

RegionID 2 ise, RegionDescription alanında Western yazar. İfadenin devamına bakmaz.

Değilse;

RegionID 3 ise, RegionDescription alanında Northern yazar. İfadenin devamına bakmaz.

Değilse;

RegionID 4 ise, RegionDescription alanında Southern yazar. İfadenin devamına bakmaz.

Değilse;

ELSE ifadesi eklenmediği için NULL yazacaktır.

Örnek 2:

Aşağıdaki resimde görülen örnekte de mantık aynı şekilde işlemektedir.

TitleOfCourtesy alanı Ms. İse ‘W’ yazar. Değilse diğer koşulu kontrol eder.

Mrs. İse ‘W’ yazar. Değilse diğer koşulu kontrol eder.

Mr. İse ‘M’ yazar. Değilse ELSE tarafına düşer ve ‘Unknown ’ yazar.

Searched Case

CASE

WHEN koşul(lar) THEN sonuç

WHEN koşul(lar) THEN sonuç

ELSE sonuçN

END  AS Alias

Koşul alanlarına Boolen İfadeleri de denir. TRUE ya da FALSE döndüren değerlerdir.

Örnek:

SELECT

TerritoryDescription,RegionID,

CASE

WHEN RegionID=1 THEN ‘Eastern’

WHEN RegionID=2 THEN ‘Western’

WHEN RegionID=3 THEN ‘Northern’

WHEN RegionID=4 THEN ‘Southern’

END AS RegionDescription

FROM Territories

Simple Case de Searched Case gibi çalışmaktadır. Tüm koşulları sırası ile kontrol eder ve karşılayan koşulun THEN ifadesine düşerek belirtilen sonucu döndürür.

Belirgin fark, Searced Case ile birden fazla koşul yazabilme imkanı bulunmaktadır.

Aşağıdaki örnekte Aynı sonucu olan Ms. Ve Mrs. Alanları tek bir When Then aralığında yazılabildi.

buketbodur tarafından yayımlandı

İş zekası ve Veri Ambarı Danışmanı

SQL Eğitim Serisi 9 – Case When İfadeleri” için 2 yorum

  1. Thank you, I have just been looking for information approximately this subject for
    ages and yours is the greatest I’ve found out till now.
    However, what concerning the bottom line? Are you certain about the source?

    Beğen

Yorum bırakın