Реляційні оператори PIVOT і UNPIVOT можна використовувати для зміни повертає табличне значення виразу в іншій таблиці. Оператор PIVOT розгортає повертає табличне значення вираження, перетворюючи унікальні значення одного стовпця вираження в кілька вихідних стовпців, а також, в разі необхідності, об'єднує залишилися повторювані значення стовпця і відображає їх у вихідних даних. Оператор UNPIVOT виробляє дії, зворотні PIVOT, перетворюючи стовпці повертає табличне значення виразу в значення стовпця.
Синтаксис оператора PIVOT є більш простим і зрозумілим, ніж синтаксис, який може виконати ту саму дію за допомогою послідовності інструкцій SELECT. CASE. Повний опис синтаксису інструкції PIVOT см. В розділі FROM (Transact-SQL).
Анотований синтаксис інструкції PIVOT показаний нижче.
SELECT <несведенный столбец>.
[Перший зведений стовпець] AS <имя_столбца>.
[Другий зведений стовпець] AS <имя столбца>.
[Останній зведений стовпець] AS <имя столбца>
( <запрос SELECT, который формирует данные> )
AS <псевдоним исходного запроса>
[<столбец, который содержит значение, которые станут заголовками столбцов>]
IN ([перший зведений стовпець]. [Другий зведений стовпець].
[Останній зведений стовпець])
) AS <псевдоним сводной таблицы>
<необязательное предложение ORDER BY>
SELECT
[First pivoted column] AS
[Second pivoted column] AS
[Last pivoted column] AS
(
AS
[
IN ([first pivoted column], [second pivoted column],
[Last pivoted column])
) AS
Це означає, що унікальні значення стовпця EmployeeID стають полями підсумкового результуючого набору. Отже, існує стовпець для кожного числа EmployeeID. зазначеного в пропозиції відомості: в цьому випадку співробітники 164. 198. 223. 231 і 233. The PurchaseOrderID служить стовпцем значень, за яким групуються стовпці, які повертаються в кінцевий висновок і звані стовпцями угруповання. У цьому випадку значення стовпців угруповання обробляються за допомогою функції COUNT. Зверніть увагу, що при обчисленні функції COUNT для кожного співробітника видається попередження, що повідомляє, що порожні значення стовпця PurchaseOrderID не враховуються.
При статистичній обробці даних з використанням функцій, що містять оператор PIVOT, порожні значення стовпців не враховуються.
Оператор UNPIVOT виконує дії, зворотні оператору PIVOT, перетворюючи стовпці даних в рядки. Припустимо, що таблиця, створена в ході виконання попереднього прикладу, зберігається в базі даних і має ідентифікатор pvt. Нехай необхідно перетворити ідентифікатори стовпців Emp1. Emp2. Emp3. Emp4 і Emp5 в рядки даних, згруповані по постачальниках. В цьому випадку необхідно визначити два додаткових стовпчика. Дамо колонку з перетворені значення (Emp1. Emp2.), Ім'я Employee. а колонку з значення повертати стовпців, ім'я Orders. Зазначені стовпці пов'язані відповідно з такими параметрами у визначенні мовою Transact-SQL, як pivot_column і value_column. запит: