SQL에서 Pivot 및 Unpivot은 테이블을 보다 간단하게 보기 위해 한 테이블을 다른 테이블로 변환하는 데 사용되는 관계 연산자입니다. 관습적으로 우리는 이렇게 말할 수 있습니다. 피벗 연산자는 테이블의 행 데이터를 열 데이터로 변환합니다. 그만큼 피벗 해제 연산자는 열 기반 데이터를 행으로 변환하는 반대 작업을 수행합니다.
통사론:
1. 피벗:
SELECT (ColumnNames) FROM (TableName) PIVOT ( AggregateFunction(ColumnToBeAggregated) FOR PivotColumn IN (PivotColumnValues) ) AS (Alias) //Alias is a temporary name for a table>
2. 피벗 해제:
SELECT (ColumnNames) FROM (TableName) UNPIVOT ( AggregateFunction(ColumnToBeAggregated) FOR PivotColumn IN (PivotColumnValues) ) AS (Alias)>
예-1:
강좌 이름, 강좌 카테고리 및 가격과 같은 값을 사용하여 geeksforgeeks라는 간단한 테이블을 만들고 해당 값을 삽입했습니다.
Create Table geeksforgeeks ( CourseName nvarchar(50), CourseCategory nvarchar(50), Price int ) Insert into geeksforgeeks values('C', 'PROGRAMMING', 5000) Insert into geeksforgeeks values('JAVA', 'PROGRAMMING', 6000) Insert into geeksforgeeks values('PYTHON', 'PROGRAMMING', 8000) Insert into geeksforgeeks values('PLACEMENT 100', 'INTERVIEWPREPARATION', 5000) SELECT * FROM geeksforgeeks> 우리가 얻는 결과는 다음과 같습니다.
| 강좌명 | 강좌카테고리 | 가격 |
|---|---|---|
| 씨 | 프로그램 작성 | 5000 |
| 자바 | 프로그램 작성 | 6000 |
| 파이썬 | 프로그램 작성 | 8000 |
| 배치 100 | 인터뷰 준비 | 5000 |
이제 신청합니다 피벗 이 데이터에 대한 연산자:
SELECT CourseName, PROGRAMMING, INTERVIEWPREPARATION FROM geeksforgeeks PIVOT ( SUM(Price) FOR CourseCategory IN (PROGRAMMING, INTERVIEWPREPARATION ) ) AS PivotTable>
Pivot 연산자를 사용한 후 다음과 같은 결과를 얻습니다.
| 강좌명 | 프로그램 작성 | 면접준비 |
|---|---|---|
| 씨 | 5000 | 없는 |
| 자바 | 6000 | 없는 |
| 배치 100 | 없는 | 5000 |
| 파이썬 | 8000 | 없는 |
예-2:
이제 위의 예에서 생성된 동일한 테이블 geeksforgeeks를 사용하고 Pivoted 테이블에 Unpivot 연산자를 적용합니다.
지원 UNPIVOT 운영자:
SELECT CourseName, CourseCategory, Price FROM ( SELECT CourseName, PROGRAMMING, INTERVIEWPREPARATION FROM geeksforgeeks PIVOT ( SUM(Price) FOR CourseCategory IN (PROGRAMMING, INTERVIEWPREPARATION) ) AS PivotTable ) P UNPIVOT ( Price FOR CourseCategory IN (PROGRAMMING, INTERVIEWPREPARATION) ) AS UnpivotTable>
Unpivot 연산자를 사용한 후 테이블의 열을 다시 행으로 성공적으로 변환했기 때문에 원래 테이블을 다시 가져옵니다.
| 강좌명 | 강좌카테고리 | 가격 |
|---|---|---|
| 씨 | 프로그램 작성 | 5000 |
| 자바 | 프로그램 작성 | 6000 |
| 배치 100 | 인터뷰 준비 | 5000 |
| 파이썬 | 프로그램 작성 | 8000 |