#1 Data Analytics Program in India
₹2,499₹1,499Enroll Now
4 min read
Question 18 of 29easy

How 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;