Операторы PIVOT и UNPIVOT используются для изменения структуры таблиц в Transact-SQL.
PIVOT преобразует уникальные значения из одной колонки (Pivot Column) в новые колонки в выходной таблице. При этом агрегируются строки по значению другой колонки (Grouping Column).
UNPIVOT выполняет обратное действие: преобразует столбцы в строки, фактически "нормализуя" данные из широкой таблицы в более узкую и длинную.
Пример PIVOT:
Предположим, есть таблица Sales с колонками Employee, Year, Amount.
| Employee | Year | Amount |
|---|---|---|
| Alice | 2020 | 100 |
| Bob | 2020 | 150 |
| Alice | 2021 | 120 |
| Bob | 2021 | 180 |
Использование PIVOT для получения годовых продаж по сотрудникам:
sql
Результат:
| Employee | 2020 | 2021 |
|---|---|---|
| Alice | 100 | 120 |
| Bob | 150 | 180 |
Пример UNPIVOT:
Предположим, есть таблица AnnualSales с колонками Employee, [2020], [2021].
| Employee | 2020 | 2021 |
|---|---|---|
| Alice | 100 | 120 |
| Bob | 150 | 180 |
Использование UNPIVOT для преобразования обратно в формат с колонками Year и Amount:
sql
Результат:
| Employee | Year | Amount |
|---|---|---|
| Alice | 2020 | 100 |
| Alice | 2021 | 120 |
| Bob | 2020 | 150 |
| Bob | 2021 | 180 |
Оба оператора используются для упрощения запросов при работе с "широкими" или "узкими" таблицами, предоставляя более удобное для анализа или представления данных форматирование из реляционной структуры.