В T-SQL операция UNPIVOT используется для преобразования данных по столбцам в данные по строкам. Эта операция особенно полезна, когда вам нужно проанализировать или манипулировать данными в другом формате. В этой статье блога мы рассмотрим различные методы выполнения UNPIVOT в T-SQL с примерами кода.
Метод 1: использование оператора UNPIVOT
Оператор UNPIVOT — это встроенная функция T-SQL, позволяющая преобразовывать столбцы в строки. Вот пример:
SELECT [Country], [Year], [Value]
FROM (
SELECT [Country], [2019], [2020], [2021]
FROM [YourTable]
) AS SourceTable
UNPIVOT (
[Value] FOR [Year] IN ([2019], [2020], [2021])
) AS UnpivotedTable;
Метод 2: использование UNION ALL
Другой подход – использование оператора UNION ALL для объединения нескольких операторов SELECT, каждый из которых представляет столбец, в один набор результатов:
SELECT [Country], '2019' AS [Year], [2019] AS [Value]
FROM [YourTable]
UNION ALL
SELECT [Country], '2020' AS [Year], [2020] AS [Value]
FROM [YourTable]
UNION ALL
SELECT [Country], '2021' AS [Year], [2021] AS [Value]
FROM [YourTable];
Метод 3: использование CROSS APPLY и VALUES
Вы также можете использовать оператор CROSS APPLY с предложением VALUES, чтобы отменить сведение данных:
SELECT [Country], [Year], [Value]
FROM [YourTable]
CROSS APPLY (
VALUES
('2019', [2019]),
('2020', [2020]),
('2021', [2021])
) AS UnpivotedTable([Year], [Value]);
В этой статье мы рассмотрели три метода выполнения UNPIVOT в T-SQL. Оператор UNPIVOT, UNION ALL и CROSS APPLY со значениями предоставляют эффективные способы преобразования данных по столбцам в данные по строкам. В зависимости от ваших конкретных требований и предпочтений вы можете выбрать метод, который лучше всего соответствует вашим потребностям.