В SQL можно эмулировать сводные таблицы через конструкцию
CASE + агрегатные функции.Создадим таблицу и данные:
CREATE TABLE Sales (
id INT,
region VARCHAR(20),
amount DECIMAL(10,2)
);
INSERT INTO Sales VALUES
(1, 'North', 100.00),
(2, 'South', 200.00),
(3, 'West', 150.00),
(4, 'North', 120.00);
Пример разворота,
CASE выделяет значения по условию, а агрегатная функция сводит их в колонку. Здесь используется MAX, поэтому для North берётся 120 (максимум):SELECT
MAX(CASE WHEN region = 'North' THEN amount END) AS North,
MAX(CASE WHEN region = 'South' THEN amount END) AS South,
MAX(CASE WHEN region = 'West' THEN amount END) AS West
FROM Sales;
Если нужно посчитать итоги — ставим
SUM вместо MAX:SELECT
SUM(CASE WHEN region = 'North' THEN amount ELSE 0 END) AS North,
SUM(CASE WHEN region = 'South' THEN amount ELSE 0 END) AS South,
SUM(CASE WHEN region = 'West' THEN amount ELSE 0 END) AS West
FROM Sales;
🔥 Приём применяется, когда список колонок известен заранее и нужна статическая отчётная форма.
➡️ SQL Ready | #практика