WHERE clause’da CASE kullanımı

Selamlar,

where clause’da case yapısının nasıl kullanılabileceğini anlatmaya çalışıcam bu yazıda.

case yapısını select statement’ındaki kullanımı oldukça kolay fakat case’i where koşulunun içinde de kullanmak mümkün. Örnek verecek olursak;

1. örnek

İlk başta basit bir örnek ile başlayalım.

SELECT e.first_name, e.salary 
  FROM HR.EMPLOYEES e
 WHERE CASE WHEN e.salary > 5000 THEN 1
            WHEN e.salary < 3000 THEN 2
        END = 2;

case1

2. Örnek

Bu örneğimizde 20, 30 ve 50 id’li departmanlarda çalışanlara farklı zam uygulanıyor olsun ve zamlı maaşları 5000’den fazla olan çalışanları seçelim.

SELECT e.first_name, e.department_id, e.salary
  FROM HR.EMPLOYEES e
 WHERE CASE WHEN e.department_id = 20 THEN e.salary * 1.10
            WHEN e.department_id = 30 THEN e.salary * 1.15
            WHEN e.department_id = 50 THEN e.salary * 1.20
        END > 5000;
case23. örnek

20,30 ve 50 id’li departmanlarda çalışanlara farklı zam uygulansın ancak bu sefer çalışanların işe giriş tarihleri de işin içine girsin. Örneğin department ID = 20 için 2006, department id 30 için 2007 ve department id 50 için 2008 yılından sonra işe giren çalışanlara zam yapılıyor. Zamlı maaşı 3000’den yüksek olan çalışanları seçelim.

SELECT e.first_name, e.hire_date, e.department_id, e.salary
 FROM HR.EMPLOYEES e
 WHERE CASE WHEN e.department_id = 20 
             AND e.hire_date > to_date('01.01.2006', 'dd.mm.yyyy') 
            THEN e.salary * 1.10
            WHEN e.department_id = 30 
             AND e.hire_date > to_date('01.01.2007', 'dd.mm.yyyy') 
            THEN e.salary * 1.15
            WHEN e.department_id = 50 
             AND e.hire_date > to_date('01.01.2008', 'dd.mm.yyyy') 
            THEN e.salary * 1.20
        END > 3000;

case3
Kolay gelsin.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s