SQL CASE Expression
The SQL CASE expression is a control flow statement that allows you to add conditional logic to your SQL queries. It's similar to the if-else statements found in many programming languages. The CASE expression goes through conditions and returns a value when the first condition is met. If no conditions are true, it returns a default value.
Here’s the general syntax:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE resultN
END
Let's look at some examples to better understand how the CASE expression works.
Example 1: Basic CASE Expression
Suppose you have a table Employees with columns EmployeeID, Name, and DepartmentID. You want to create a report that shows each employee's department name instead of the department ID.
SELECT
EmployeeID,
Name,
DepartmentID,
CASE
WHEN DepartmentID = 1 THEN 'HR'
WHEN DepartmentID = 2 THEN 'Finance'
WHEN DepartmentID = 3 THEN 'Engineering'
ELSE 'Other'
END AS DepartmentName
FROM Employees;
Output:
| EmployeeID | Name | DepartmentID | DepartmentName |
|---|---|---|---|
| 1 | Alice | 1 | HR |
| 2 | Bob | 3 | Engineering |
| 3 | Charlie | 2 | Finance |
| 4 | David | 4 | Other |
Example 2: CASE Expression with Aggregate Functions
Suppose you have a table Orders with columns OrderID, CustomerID, OrderDate, and Amount. You want to categorize each order as 'Small', 'Medium', or 'Large' based on the Amount.
SELECT
OrderID,
CustomerID,
Amount,
CASE
WHEN Amount < 100 THEN 'Small'
WHEN Amount BETWEEN 100 AND 500 THEN 'Medium'
ELSE 'Large'
END AS OrderSize
FROM Orders;
Output:
| OrderID | CustomerID | Amount | OrderSize |
|---|---|---|---|
| 101 | 1 | 50 | Small |
| 102 | 2 | 300 | Medium |
| 103 | 1 | 700 | Large |
| 104 | 3 | 150 | Medium |
Example 3: Nested CASE Expression
Suppose you have a table Sales with columns SaleID, ProductID, Quantity, and SaleDate. You want to determine the sales performance for each product based on the quantity sold.
SELECT
SaleID,
ProductID,
Quantity,
CASE
WHEN Quantity < 10 THEN 'Low'
WHEN Quantity BETWEEN 10 AND 50 THEN
CASE
WHEN Quantity < 30 THEN 'Medium'
ELSE 'High-Medium'
END
ELSE 'High'
END AS Performance
FROM Sales;
Output:
| SaleID | ProductID | Quantity | Performance |
|---|---|---|---|
| 1 | 101 | 5 | Low |
| 2 | 102 | 25 | Medium |
| 3 | 103 | 40 | High-Medium |
| 4 | 104 | 60 | High |
Example 4: CASE Expression with GROUP BY
Suppose you have a table Products with columns ProductID, ProductName, and Price. You want to categorize the products into different price ranges and get the count of products in each category.
SELECT
CASE
WHEN Price < 50 THEN 'Cheap'
WHEN Price BETWEEN 50 AND 150 THEN 'Affordable'
ELSE 'Expensive'
END AS PriceRange,
COUNT(*) AS ProductCount
FROM Products
GROUP BY
CASE
WHEN Price < 50 THEN 'Cheap'
WHEN Price BETWEEN 50 AND 150 THEN 'Affordable'
ELSE 'Expensive'
END;
Output:
| PriceRange | ProductCount |
|---|---|
| Cheap | 10 |
| Affordable | 20 |
| Expensive | 5 |
These examples demonstrate the versatility and power of the CASE expression in SQL for implementing conditional logic directly in your queries.
At Online Learner, we're on a mission to ignite a passion for learning and empower individuals to reach their full potential. Founded by a team of dedicated educators and industry experts, our platform is designed to provide accessible and engaging educational resources for learners of all ages and backgrounds.
Terms Disclaimer About Us Contact Us
Copyright 2023-2025 © All rights reserved.
