본문 바로가기
프로그래밍/MSSQL

[MSSSQL] PIVOT UNPIVOT

by wyatti 2023. 4. 15.

MSSSQL PIVOT UNPIVOT

mssql PIVOT란?

MSSQL PIVOT은 행 데이터를 열 데이터로 변환하는 기능을 제공하는 쿼리 기능입니다. 이를 통해 집계 함수를 사용하여 데이터를 집계할 수 있으며, 결과 데이터의 열은 PIVOT을 기준으로 지정된 열의 값을 기반으로 생성됩니다.

 

 

 

PIVOT 구문

PIVOT은 다음과 같은 구문을 사용합니다.

SELECT <non-pivoted column>, [pivoted column 1], [pivoted column 2], ··· [pivoted column n]
FROM
	(<select query>)

PIVOT
(
    <aggregate function>(<value column>)  
    FOR [pivoted column] IN ([pivoted column 1], [pivoted column 2], ··· [pivoted column n])  
) AS [alias name];

위의 쿼리에서 <select query>는 PIVOT 하려는 테이블 또는 뷰를 선택하는 SELECT 문입니다. [pivoted column 1], [pivoted column 2], ···, [pivoted column n]은 결과 열의 이름입니다. <aggregate function>은 PIVOT 된 열의 값을 집계하기 위해 사용되는 함수입니다. <value column>은 PIVOT 할 값을 나타내는 열의 이름입니다.
 

PIVOT 예제

예를 들어, 다음과 같은 Sales 테이블이 있다고 가정해 보겠습니다.

MSSSQL PIVOT UNPIVOT
MSSSQL PIVOT UNPIVOT

이 테이블을 PIVOT하여 각 지역별로 과일 판매량을 보고 싶다면 다음과 같은 쿼리를 실행할 수 있습니다.

SELECT Region, Apple, Banana  
FROM
(
	SELECT Region, Product, Sales
	FROM Sales
) AS SourceTable
PIVOT
(
	SUM(Sales)
	FOR Product IN (Apple, Banana)
) AS PivotTable;

위의 예제에서, PIVOT 문은 Product 열을 기준으로 데이터를 열로 변환합니다. SUM(Sales) 함수는 Sales 열의 값을 집계하고 결과 열은 Apple, Banana로 지정됩니다. 따라서 결과 데이터는 지역별로 과일 판매량이 열로 변환되어 반환됩니다.

 

 

 

mssql UNPIVOT이란?

MSSQL UNPIVOT은 PIVOT과 반대로 열 데이터를 행 데이터로 변환하는 기능을 제공하는 쿼리 기능입니다. 이를 통해 특정 열을 기준으로 데이터를 재정렬할 수 있습니다.
 

UNPIVOT 구문

UNPIVOT은 다음과 같은 구문을 사용합니다.

SELECT <non-pivoted column>, <value>  
FROM  
   (SELECT <key>, <value1>, <value2>, ···  
    FROM <table>) p  
UNPIVOT  
   (<value> FOR <column> IN  
      (<value1>,<value2>, ···))AS unpvt;

 

위의 쿼리에서 <table>은 UNPIVOT하려는 테이블 또는 뷰를 선택하는 SELECT 문입니다. <key> 열은 행을 식별하는데 사용되는 열이며, <value1>, <value2>는 UNPIVOT될 열의 이름입니다. <value>는 UNPIVOT된 값이 저장될 열의 이름입니다. <column>은 UNPIVOT할 열의 이름입니다.

 

 

 

UNPIVOT 예제

예를 들어, 다음과 같은 Sales 테이블이 있다고 가정해 보겠습니다.

MSSSQL PIVOT UNPIVOT
MSSSQL PIVOT UNPIVOT

 
이 테이블을 UNPIVOT하여 각 지역별로 과일 판매량을 보고 싶다면 다음과 같은 쿼리를 실행할 수 있습니다.
 

SELECT Region, Product, Sales  
FROM  
   (SELECT Region, Apple, Banana  
    FROM Sales) p  
UNPIVOT  
   (Sales FOR Product IN   
      (Apple, Banana)  
)AS unpvt;

 

위의 쿼리는 다음과 같은 결과를 반환합니다.

댓글