4 min read
•Question 18 of 29easyHow do you use CASE statements?
Conditional logic in SQL.
What You'll Learn
- Simple CASE
- Searched CASE
- Use cases
Simple CASE
query.sqlSQL
SELECT
name,
status,
CASE status
WHEN 'A' THEN 'Active'
WHEN 'I' THEN 'Inactive'
WHEN 'P' THEN 'Pending'
ELSE 'Unknown'
END AS status_text
FROM users;Searched CASE
query.sqlSQL
SELECT
name,
score,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
WHEN score >= 60 THEN 'D'
ELSE 'F'
END AS grade
FROM students;In WHERE Clause
query.sqlSQL
SELECT * FROM orders
WHERE CASE
WHEN @filter = 'pending' THEN status = 'pending'
WHEN @filter = 'completed' THEN status = 'completed'
ELSE 1=1
END;In ORDER BY
query.sqlSQL
SELECT * FROM tasks
ORDER BY
CASE priority
WHEN 'high' THEN 1
WHEN 'medium' THEN 2
WHEN 'low' THEN 3
END;Conditional Aggregation
query.sqlSQL
SELECT
department,
COUNT(*) AS total_employees,
SUM(CASE WHEN status = 'active' THEN 1 ELSE 0 END) AS active_count,
SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END) AS male_count,
SUM(CASE WHEN gender = 'F' THEN 1 ELSE 0 END) AS female_count
FROM employees
GROUP BY department;Pivot with CASE
query.sqlSQL
SELECT
product_id,
SUM(CASE WHEN MONTH(date) = 1 THEN amount ELSE 0 END) AS Jan,
SUM(CASE WHEN MONTH(date) = 2 THEN amount ELSE 0 END) AS Feb,
SUM(CASE WHEN MONTH(date) = 3 THEN amount ELSE 0 END) AS Mar
FROM sales
GROUP BY product_id;