Оператор CASE у SQL використовується для перевірки умов та виконання операцій над даними. Синтаксис виразу CASE завжди починається з ключового слова CASE і закінчується ключовим словом END, за яким слідує псевдонім (оператор AS) імені стовпця. Наприклад:
|
1 2 3 4 5 |
SELECT customer_id, first_name, CASE WHEN age >= 18 THEN 'Allowed' END AS can_vote FROM Customers; |
Тут ми перевіряємо кожен рядок на відповідність заданому виразу CASE та виконуємо додаткову дію у разі відповідності. Якщо вік (age) більше або дорівнює 18, то вибираються відповідні рядки customer_id та first_name і додається додатковий стовпець can_vote зі значенням Allowed.

Розглянемо інший приклад. Припустимо, ми хочемо надати клієнтам знижку 10% на кожне замовлення на різдвяному розпродажі, якщо сума перевищує 400.
|
1 2 3 4 5 |
SELECT order_id, customer_id, CASE WHEN amount >= 400 THEN (amount - amount * 10/100) END AS offer_price FROM Orders; |
Тут ми перевіряємо, чи сума замовлення (amount) більша або дорівнює 400. Якщо ця умова виконана, додається новий стовпець offer_price, що містить суми замовлень з урахуванням 10% знижки (формула amount - amount*10/100).

Також можна використовувати відразу декілька умов усередині одного виразу CASE.
|
1 2 3 4 5 6 |
SELECT customer_id, first_name, CASE WHEN country = 'USA' THEN 'United States of America' WHEN country = 'UK' THEN 'United Kingdom' END AS country_name FROM Customers; |
Тут ми вибираємо стовпці customer_id, first_name та додаємо стовпець з ім’ям country_name. Значенням country_name буде:
United States of America, якщо країна (поле country) — USA.
United Kingdom, якщо країна (поле country) — UK.

CASE з ELSE в SQL
Оператор CASE може мати необов’язкову частину ELSE. Частина ELSE виконується, якщо жодна з умов в операторі CASE не виконується. Наприклад:
|
1 2 3 4 5 6 7 |
SELECT customer_id, first_name, CASE WHEN country = 'USA' THEN 'United States of America' WHEN country = 'UK' THEN 'United Kingdom' ELSE 'Unknown Country' END AS country_name FROM Customers; |
Тут ми вибираємо стовпці customer_id, first_name та додаємо стовпець з ім’ям country_name. Значенням country_name буде:
United States of America, якщо країна (поле country) — USA;
United Kingdom, якщо країна (поле country) — UK;
Unknown Country, якщо країною (поле country) не є ні USA, ні UK (спрацьовує частина ELSE).

