Yandex Metrica
SQL Server'da CASE WHEN Kullanımı - Yasin Sunmaz

Yasin Sunmaz

Kodladıkça değişen bir dünya...

SQL Server'da CASE WHEN Kullanımı

08.01.2023 yasinsunmaz 11832 0

SQL Server'da CASE WHEN yapısını bu yazımda inceleyeceğiz. CASE WHEN ile belirli koşullarda farklı çıktılar ya da işlemler yapabilmek için kullanabiliyoruz. SQL'de CASE WHEN ile ilgili farklı örnekler ile sorgular hazırladım. Var olan CASE WHEN dışında nasıl kullanabilirsiniz onlardan bahsetmeye çalıştım. Bu yazı sonunda CASE WHEN'i efektif olarak kullanabileceksiniz. Sizin de kullandığınız farklı CASE WHEN yapısı, mantığı var ise benim paylaşmaktan çekinmeyin.

Bu yazdığım sorguları Nortwind veri tabanı üzerinden yaptım. Veri tabanını indirmek için buraya tıklayabilirsiniz. Veri tabanını SQL Server üzerinden açıp script kodunu çalıştırabilirsiniz. SQL Server'da script dosyasını nasıl çalıştırılır bilmiyorsanız SQL Server Script Alma ve Çalıştırma adlı yazılımı inceleyebilirsiniz.

SQL CASE WHEN Kullanımı

CASE WHEN genel itibari ile koşulları yönetebilmek ve bunlar ile ilgili farklı çıktılar verebilmektir. Yapıda belli koşulları kontrol edebilmek için WHEN değimlerini kullanırız. Bu koşullar dışında bir durum gerçekleşti ise ELSE değimi ile ilgili çıktıyı verebiliriz. Örneğin birinin çalışma yılı 1 yıl ve altı ise %30 zam, 1 yıldan fazla çalışma yılı var ise %40 zamlı halini görmek istediğinizde CASE WHEN yapısını kullanabilirsiniz. Buna benzer ve daha farklı örneklere geçelim.

Basit CASE WHEN Kullanımı

SELECT
    Country
   ,CASE
      WHEN Country = 'USA' THEN 1
      ELSE '0'
    END AS CODE
  FROM Employees e

Sayının 2'ye Tam Bölünme Durumunu Bulma

 SELECT
    CASE
      WHEN 11 % 2 = 0 THEN CAST(1 AS BIT)
      ELSE CAST(0 AS BIT)
    END AS Sayi2YeTamBolunurMu

ISNULL İle Birlikte CASE WHEN Kullanımı

  SELECT
    e.Region RegionValue
   ,CASE
      WHEN ISNULL(e.Region, 'YOK') = 'YOK' THEN 'Region Yok'
      WHEN ISNULL(e.Region, 'YOK') <> 'YOK' THEN e.Region
    END RegionStatus
  FROM Employees e

CASE WHEN Yapısı Farklı Kullanımı

  SELECT
    e.TitleOfCourtesy TitleOfCourtesyValue
   ,CASE e.TitleOfCourtesy
      WHEN 'Mr.' THEN 'Erkek'
      WHEN 'Mrs.' THEN 'Kadın'
      ELSE 'Tanımlanamadı'
    END Cinsiyeti
  FROM Employees e

İç içe CASE WHEN Yapısı Kullanımı

  SELECT
    e.TitleOfCourtesy + ' ' + e.FirstName + '' + e.LastName Person
   ,YEAR(GETDATE()) - YEAR(e.BirthDate) Age
   ,CASE
      WHEN e.TitleOfCourtesy = 'Mr.' THEN CASE
          WHEN (YEAR(GETDATE()) - YEAR(e.BirthDate)) >= 65 THEN 'Erkek kategorisinde emekli olabilir'
          WHEN (YEAR(GETDATE()) - YEAR(e.BirthDate)) < 65 THEN 'Erkek Erkek kategorisinde emekli olamaz'
        END
      WHEN e.TitleOfCourtesy = 'Mrs.' THEN CASE
          WHEN (YEAR(GETDATE()) - YEAR(e.BirthDate)) >= 63 THEN 'Kadın kategorisinde emekli olabilir'
          WHEN (YEAR(GETDATE()) - YEAR(e.BirthDate)) < 63 THEN 'Kadın kategorisinde emekli olamaz'
        END
      ELSE 'Tanımsız unvan'
    END EmekliDurumu
  FROM Employees e

Koşulu Sağlayanların Sayısını Bulma

  SELECT
    COUNT(CASE
      WHEN Country = 'USA' THEN 1
    END) AS USACount
   ,COUNT(CASE
      WHEN Country = 'UK' THEN 1
    END) AS UKCount
  FROM Employees

İlgili Duruma Göre CASE WHEN İle Sıralama Yapma

  SELECT
    *
  FROM Employees e
  ORDER BY (CASE
    WHEN e.Region IS NULL THEN e.City
    ELSE e.Country
  END)

 Koşula Göre Aynı Sütun İçerisinde İki Farklı Sıralama Yapma

  SELECT
    *
  FROM Employees e
  ORDER BY CASE
    WHEN e.Extension > 1000 THEN e.Extension
  END DESC,
  CASE
    WHEN e.Extension < 1000 THEN e.Extension
  END ASC

Genel itibari ile CASE WHEN ile ilgili farklı kullanımlar ile sizlere aktarmaya çalıştım. CASE WHEN oldukça yaralı olsa da çok fazla kullanıldığında performansı da etkileceyektir. Bu her zaman göz önünde bulundurulmalıdır.

Umarım faydalı olmuştur. İyi çalışmalar.

  • Yorum yapabilmek için giriş yapmalısınız. Giriş yapmak için tıklayınız.

Diğer Yazılar

SQL Server Synonym Nedir ve Nasıl Kullanılır?

09.01.2026 yasinsunmaz 248 0

Bu yazımda SQL Server'da oldukça faydalı olan synonym yapısını inceleyeceğiz. Veritabanı projelerinde zamanla tablo isimleri uzar, şema yapıları deği...

SQL Server Schema Kullanımı

10.12.2025 yasinsunmaz 264 0

Bu yazımda SQL Server'da oldukça faydalı olan schema yapısını inceleyeceğiz. SQL Server’da şema yapısı özellikle orta ve büyük ö...

SQL Server'da SELECT INTO ve INSERT INTO SELECT Kullanımı

31.05.2025 yasinsunmaz 816 0

Bu yazımda, SQL Server'da oldukça sık kullanılan ve günlük veri işlemlerinde hayat kurtaran iki komutu inceleyeceğiz: SELECT INTO ve INSERT INTO SELECT. Bu ...

SQL Server'da LAG() ve LEAD() Kullanımı

23.05.2025 yasinsunmaz 652 0

Bu yazımda SQL Server'da oldukça faydalı olan LAG() ve LEAD() fonksiyonlarını inceleyeceğiz. Bu fonksiyonlar, bir satırdaki veriye bakarken, o satırın öncesindeki v...

SQL Fonksiyonları: Veritabanlarında Güçlü ve Esnek İşlemler

09.06.2023 yasinsunmaz 1695 0

SQL (Structured Query Language), veritabanı yönetim sistemlerinde verileri yönetmek, sorgulamak ve işlemek için yaygın olarak kullanılan bir dildir. SQL fonksiyonl...