Использование оператора PIVOT

Tsql теория > Использование оператора PIVOT
31.05.2018 14:02:43



Статья:

Реляционный оператор PIVOT можно использовать для изменения возвращающего табличное значение выражения в другой таблице. Оператор PIVOT разворачивает возвращающее табличное значение выражение, преобразуя уникальные значения одного столбца выражения в несколько выходных столбцов, а также, в случае необходимости, объединяет оставшиеся повторяющиеся значения столбца и отображает их в выходных данных.

SELECT <несведенный столбец>, 
    [первый сведенный столбец] AS <имя столбца>, 
    [второй сведенный столбец] AS <имя столбца>, 
    ... 
    [последний сведенный столбец] AS <имя столбца>, 
FROM 
    (< запрос SELECT, извлекающий эти данные>) 
    AS <псевдоним исходного запроса> 
PIVOT 
( 
    <статистическая функция>(<статистически обработанный столбец>) 
FOR 
[<столбец, содержащий значения, которые станут именами столбцов>] 
    IN ( [первый сведенный столбец], [второй сведенный столбец], 
    ... [последний сведенный столбец]) 
)AS <псевдоним сведенной таблицы> 
<необязательное предложение ORDER BY>; 
USE AdventureWorks2008R2GO 
SELECT VendorID, [250AS Emp1, [251AS Emp2, [256AS Emp3, [257AS Emp4, [260AS Emp5 
FROM  
(SELECT PurchaseOrderIDEmployeeIDVendorID 
FROM Purchasing.PurchaseOrderHeaderp 
PIVOT 
( 
COUNT (PurchaseOrderIDFOR EmployeeID IN 
( [250], [251], [256], [257], [260] ) 
) AS pvt 
ORDER BY pvt.VendorID; 
 
VendorID    Emp1        Emp2        Emp3        Emp4        Emp5 
1492              2               5                 4              4               4 
1494              2               5                 4              5               4 
1496              2               4                 4              5               5 
1498              2               5                 4              4               4 
1500              3               4                 4              5               4 
Данные, возвращаемые в результате выполнения указанного подзапроса выборки, сводятся в столбец EmployeeID.