How to Use the CASE Statement in SQL for Conditional Logic

The CASE statement in SQL allows you to implement conditional logic within queries, making it a powerful tool for handling complex data transformations and classifications.

Basic Syntax

The CASE statement works like an IF-ELSE structure, evaluating conditions and returning corresponding values:

SELECT column_name,
       CASE
           WHEN condition1 THEN result1
           WHEN condition2 THEN result2
           ELSE default_result
       END AS alias_name
FROM table_name;

Example: Categorizing Data

Assume we have an Employees table with an Age column, and we want to categorize employees based on their age groups:

SELECT Name, Age,
       CASE
           WHEN Age < 25 THEN 'Young'
           WHEN Age BETWEEN 25 AND 40 THEN 'Mid-Age'
           ELSE 'Senior'
       END AS AgeCategory
FROM Employees;

Output Example:

Name Age AgeCategory
Alice 22 Young
Bob 30 Mid-Age
Charlie 50 Senior

Using CASE in Aggregations

CASE is often used in aggregate functions to perform conditional counting or summing:

SELECT
    SUM(CASE WHEN Age < 25 THEN 1 ELSE 0 END) AS YoungCount,
    SUM(CASE WHEN Age BETWEEN 25 AND 40 THEN 1 ELSE 0 END) AS MidAgeCount,
    SUM(CASE WHEN Age > 40 THEN 1 ELSE 0 END) AS SeniorCount
FROM Employees;

Using CASE in ORDER BY

You can use CASE to customize sorting order dynamically:

SELECT Name, Age
FROM Employees
ORDER BY
    CASE
        WHEN Age < 25 THEN 1
        WHEN Age BETWEEN 25 AND 40 THEN 2
        ELSE 3
    END;

Conclusion

The CASE statement is a versatile tool in SQL for implementing conditional logic in SELECT, WHERE, ORDER BY, and aggregate functions. It enhances query flexibility, making data classification and transformation more efficient.

Stay Sharp. Weekly Insights.
New posts, framework updates and weekly software conversations.

No spam. Unsubscribe anytime.
Author profile picture
Walt is a software engineer, startup founder and previous mentor for a coding bootcamp. He has been creating software for the past 20+ years.
No comments posted yet
// Add a comment
// Color Theme

Custom accent
Pick any color
for the accent