В SQL оператор CASE WHEN — это мощный инструмент, позволяющий выполнять условные операции внутри запроса. Он позволяет вам указывать несколько условий и выполнять различные действия на основе этих условий. В этой статье блога мы рассмотрим различные методы использования оператора CASE WHEN с примерами кода, чтобы продемонстрировать его универсальность и полезность в SQL-запросах.
Метод 1: базовый оператор CASE WHEN
Основной синтаксис оператора CASE WHEN следующий:
SELECT column_name,
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
FROM table_name;
Вот пример:
SELECT product_name,
CASE
WHEN quantity > 10 THEN 'In stock'
WHEN quantity > 0 THEN 'Limited stock'
ELSE 'Out of stock'
END AS stock_status
FROM products;
Метод 2: CASE WHEN с операторами сравнения
Вы можете использовать операторы сравнения в операторе CASE WHEN для оценки условий. Например:
SELECT customer_name,
CASE
WHEN total_orders > 1000 AND last_order_date > '2022-01-01' THEN 'VIP'
WHEN total_orders > 500 AND last_order_date > '2022-01-01' THEN 'Regular'
ELSE 'Standard'
END AS customer_type
FROM customers;
Метод 3: CASE WHEN с подзапросами
Инструкцию CASE WHEN также можно комбинировать с подзапросами для выполнения более сложных условных операций. Вот пример:
SELECT order_id,
CASE
WHEN order_date > (SELECT MAX(order_date) FROM orders) THEN 'Latest'
WHEN order_date < (SELECT MIN(order_date) FROM orders) THEN 'Old'
ELSE 'Intermediate'
END AS order_status
FROM orders;
Метод 4: CASE WHEN с несколькими столбцами
В некоторых случаях может потребоваться оценить условия на основе нескольких столбцов. Этого можно добиться, включив в запрос несколько операторов CASE WHEN. Вот пример:
SELECT product_name,
CASE
WHEN price < 50 AND quantity > 10 THEN 'Discounted'
WHEN price > 100 AND quantity < 5 THEN 'Premium'
ELSE 'Regular'
END AS product_status,
CASE
WHEN category = 'Electronics' THEN 'Electronics'
WHEN category = 'Clothing' THEN 'Fashion'
ELSE 'Other'
END AS product_category
FROM products;
Оператор SQL CASE WHEN обеспечивает гибкий и эффективный способ обработки нескольких условий в запросе. Используя различные методы, представленные в этой статье, вы можете настроить запросы в соответствии с конкретными требованиями и добиться точных результатов. Если вам нужно классифицировать данные, определить статусы или выполнить сложные оценки, оператор CASE WHEN окажется ценным инструментом в вашем наборе инструментов SQL.
Не забудьте адаптировать эти методы к вашей конкретной схеме базы данных и потребностям запросов. Удачных запросов!