Использование PIVOT и UNPIVOT .
UNPIVOT
выполняет почти наоборот
операция PIVOT
, вращением
столбцы в строки. Предположим, таблица
производится в предыдущем примере
хранится в базе данных как pvt
, и вы
хотите повернуть идентификаторы столбца
Emp1
, Emp2
, Emp3
, Emp4
и Emp5
в
значения строк, которые соответствуют
конкретный поставщик. Это означает, что вы
необходимо указать два дополнительных столбца.
Столбец, который будет содержать
значения столбцов, которые вы вращаете
(Emp1
, Emp2
, ...) будет называться
Employee
, и столбец, который будет
хранить значения, которые в настоящее время проживают
под вращающимися столбцами будет
Называться заказы. Эти столбцы
соответствуют pivot_column и
value_column соответственно в
Определение Transact-SQL. Здесь
запрос.
--Create the table and insert values as portrayed in the previous example.
CREATE TABLE pvt (VendorID int, Emp1 int, Emp2 int,
Emp3 int, Emp4 int, Emp5 int)
GO
INSERT INTO pvt VALUES (1,4,3,5,4,4)
INSERT INTO pvt VALUES (2,4,1,5,5,5)
INSERT INTO pvt VALUES (3,4,3,5,4,4)
INSERT INTO pvt VALUES (4,4,2,5,5,4)
INSERT INTO pvt VALUES (5,5,1,5,5,5)
GO
--Unpivot the table.
SELECT VendorID, Employee, Orders
FROM
(SELECT VendorID, Emp1, Emp2, Emp3, Emp4, Emp5
FROM pvt) p
UNPIVOT
(Orders FOR Employee IN
(Emp1, Emp2, Emp3, Emp4, Emp5)
)AS unpvt
GO
Вот частичный набор результатов.
VendorID Employee Orders
1 Emp1 4
1 Emp2 3
1 Emp3 5
1 Emp4 4
1 Emp5 4
2 Emp1 4
2 Emp2 1
2 Emp3 5
2 Emp4 5
2 Emp5 5
...