Example 1
Show each region's revenue in separate Q1–Q4 columns
Each CASE WHEN quarter = 'Q1' THEN revenue END returns the revenue only for Q1 rows and NULL for all others. Wrapping it in SUM collapses the per-group values into a single number — NULL contributions are ignored by SUM. GROUP BY region reduces all four quarter rows per region into a single output row. Adding more columns means adding more CASE WHEN expressions; no engine-specific PIVOT clause is needed.
CREATE TABLE quarterly_sales (
region VARCHAR(20),
quarter VARCHAR(5),
revenue INT
);
INSERT INTO
quarterly_sales
VALUES
('North', 'Q1', 100),
('North', 'Q2', 150),
('North', 'Q3', 120),
('North', 'Q4', 200),
('South', 'Q1', 80),
('South', 'Q2', 90),
('South', 'Q3', 110),
('South', 'Q4', 130);SELECT
region,
SUM(
CASE
WHEN quarter = 'Q1' THEN revenue
END
) AS q1,
SUM(
CASE
WHEN quarter = 'Q2' THEN revenue
END
) AS q2,
SUM(
CASE
WHEN quarter = 'Q3' THEN revenue
END
) AS q3,
SUM(
CASE
WHEN quarter = 'Q4' THEN revenue
END
) AS q4
FROM
quarterly_sales
GROUP BY
region
ORDER BY
region;| region | q1 | q2 | q3 | q4 |
|---|---|---|---|---|
| North | 100 | 150 | 120 | 200 |
| South | 80 | 90 | 110 | 130 |
The CASE WHEN pivot syntax is identical across all supported engines.