The CASE expression evaluates conditions sequentially and returns a value once the first condition is met, akin to an if-then-else statement. If none of the conditions are true, it returns the value specified in the ELSE clause.
In the absence of an ELSE clause, and if no conditions are met, it returns NULL.
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 WHEN conditionN THEN resultN ELSE result END; |
Here is an excerpt from the “OrderDetails” table within the Northwind sample database:
OrderDetailID |
OrderID |
ProductID |
Quantity |
1 |
10248 |
11 |
12 |
2 |
10248 |
42 |
10 |
3 |
10248 |
72 |
5 |
4 |
10249 |
14 |
9 |
5 |
10249 |
51 |
40 |
The following SQL statement evaluates conditions sequentially and returns a value when the first condition is met.
SELECT OrderID, Quantity, CASE WHEN Quantity > 30 THEN ‘The quantity is greater than 30’ WHEN Quantity = 30 THEN ‘The quantity is 30’ ELSE ‘The quantity is under 30’ END AS QuantityText FROM OrderDetails; |
This SQL statement will arrange the customers by City. In case the City is NULL, it will sort by Country instead.
SELECT CustomerName, City, Country FROM Customers ORDER BY (CASE WHEN City IS NULL THEN Country ELSE City END); |