를 사용하여 SQL 서버 빌드 :
SELECT <non-pivoted column>,
[first pivoted column] AS <column name>,
[second pivoted column] AS <column name>,
...
[last pivoted column] AS <column name>
FROM
(<SELECT query that produces the data>)
AS <alias for the source query>
PIVOT
(
<aggregation function>(<column being aggregated>)
FOR
[<column that contains the values that will become column headers>]
IN ([first pivoted column], [second pivoted column],
... [last pivoted column])
) AS <alias for the pivot table>
<optional ORDER BY clause>;
당신은 다른 테이블에 테이블 반환 식을 변경하려면 PIVOT 및 UNPIVOT 관계 연산자를 사용할 수 있습니다. PIVOT은 식의 한 열에서 고유 값을 출력의 여러 열로 바꿈으로써 테이블 반환 식을 회전시키고 최종 출력에서 원하는 나머지 열 값에 필요한 집계를 수행합니다. UNPIVOT은 테이블 반환 식의 열을 열 값으로 회전하여 PIVOT에 대한 반대 작업을 수행합니다.
간단한의 AdventureWorks 예제 :
-- Pivot table with one row and five columns
SELECT 'AverageCost' AS Cost_Sorted_By_Production_Days,
[0], [1], [2], [3], [4]
FROM
(SELECT DaysToManufacture, StandardCost
FROM Production.Product) AS SourceTable
PIVOT
(
AVG(StandardCost)
FOR DaysToManufacture IN ([0], [1], [2], [3], [4])
) AS PivotTable;
더 복잡한 예 :
USE AdventureWorks2008R2;
GO
SELECT VendorID, [250] AS Emp1, [251] AS Emp2, [256] AS Emp3, [257] AS Emp4, [260] AS Emp5
FROM
(SELECT PurchaseOrderID, EmployeeID, VendorID
FROM Purchasing.PurchaseOrderHeader) p
PIVOT
(
COUNT (PurchaseOrderID)
FOR EmployeeID IN
([250], [251], [256], [257], [260])
) AS pvt
ORDER BY pvt.VendorID;
당신이 당신의 테이블에 대한 스키마를 제공하지 한 동안
For more information see here
예, [동적 SQL과 함께 피벗 함수] (http://stackoverflow.com/search?tab=newest&q=%5bpivot%5d%5bsql-server%5d%20dynamic)를 사용하여 결과를 얻을 수 있습니다. – Taryn