Pivoting преобразует данные, организованные по строкам, в столбчатый формат, что упрощает сравнение и анализ значений рядом друг с другом. Есть два распространённых подхода.
Этот метод работает во всех основных SQL базах данных:
SELECT department,
SUM(CASE WHEN year = 2023 THEN sales ELSE 0 END) AS sales_2023,
SUM(CASE WHEN year = 2024 THEN sales ELSE 0 END) AS sales_2024
FROM sales_data
GROUP BY department;
CASE WHEN проверяет каждую строку и присваивает значение нужному столбцуSUM агрегирует значения по группамGROUP BY схлопывает строки в один результат на departmentSQL Server предоставляет специальный оператор PIVOT для более чистого синтаксиса:
SELECT * FROM (
SELECT department, year, sales FROM sales_data
) AS Source
PIVOT (SUM(sales) FOR year IN ([2023], [2024])) AS PivotTable;
FOR year IN указывает, какие значения строк становятся заголовками столбцовCASE, но более читаемыйCASE + GROUP BY при написании кроссплатформенных запросов, совместимых с разными БДPIVOT когда работаешь исключительно в SQL Server и важна читаемость кодаПодход с CASE WHEN и GROUP BY совместим со всеми основными SQL базами данных, в то время как оператор PIVOT специфичен для SQL Server.
Новый — ещё не проверен сообществом
Вы