SQL Pivot – 행을 열로 변환하는 방법 이해



SQL Pivot에 대한이 문서는 자세한 예제를 통해 행 수준 데이터를 열 데이터로 변환하는 방법에 대한 포괄적 인 가이드입니다.

관계형 막대한 양의 데이터를 테이블 형태로 저장합니다. 이러한 테이블에는 여러 행과 열이있을 수 있습니다. 그러나 행 수준 데이터를 열 데이터로 변경해야한다면 어떨까요? SQL Pivot에 대한이 기사에서는 SQL Server에서 행을 열로 변환하는 방법을 보여 드리겠습니다.

이 기사에서는 다음 주제를 다룹니다.





SQL의 PIVOT은 무엇입니까?

PIVOT은 단일 열의 고유 값을 여러 열로 변환하여 테이블 값을 회전하는 데 사용됩니다. 행을 열 값으로 회전하고 필요한 경우 나머지 열 값에 대해 집계를 실행하는 데 사용됩니다.

반면 UNPIVOT은 반대 작업을 수행하는 데 사용됩니다. 따라서 특정 테이블의 열을 열 값으로 변환하는 데 사용됩니다.



이 기사에서는 SQL Pivot의 구문을 이해하겠습니다.

통사론:

SELECT NonPivoted ColumnName, [First Pivoted ColumnName] AS ColumnName, [Second Pivoted ColumnName] AS ColumnName, [Third Pivoted ColumnName] AS ColumnName, ... [Last Pivoted ColumnName] AS ColumnName FROM (데이터를 생성하는 SELECT 쿼리) AS [alias 초기 쿼리의 경우] PIVOT ([AggregationFunction] (ColumName) FOR [값이 열 머리글이 될 열의 열 이름] IN ([첫 번째 피벗 된 열 이름], [두 번째 피벗 된 열 이름], [세 번째 피벗 된 열 이름] ... [마지막 피벗 열])) AS [피벗 테이블 별칭]

여기,당신은 또한 사용할 수 있습니다 ORDER BY 절 오름차순 또는 내림차순으로 값을 정렬합니다. 이제 SQL의 PIVOT과 기본 구문이 무엇인지 알았으므로 앞으로 나아가서 사용 방법을 살펴 보겠습니다.

이해를 돕기 위해 모든 예를 설명하기 위해 다음 표를 고려할 것입니다.



공급 업체 테이블 :

SupplierID 제조일 비용 고객 ID PurchaseID
하나121230 년열한P1
2이십 일1543 년22P2
322. 3. 4. 5열한P3
414876522P1
542345233P3
631543133P1
7412342열한P2
854365422P2
9331234열한P3
1056683233P2

각 고객이 지출 한 평균 비용을 검색하는 간단한 쿼리를 작성해 보겠습니다.

CustomerID를 기준으로 공급자 그룹에서 CustomerID, AVG (Cost)를 AverageCostofCustomer로 선택합니다.

산출:

고객 ID AverageCostofCustomer
열한1787.75
224654
335238.33

이제 위의 테이블을 피벗한다고 가정하겠습니다. 여기서 CustomerID 열 값은 열 머리글이됩니다.

-1 개의 행과 3 개의 열이있는 피벗 테이블 생성 SELECT 'AverageCostofCustomer'AS Cost_According_To_Customers, [11], [22], [33] FROM (SELECT CustomerID, Cost FROM Suppliers) AS SourceTable PIVOT (AVG (Cost) FOR CustomerID IN ( [11], [22], [33])) AS 피벗 테이블

산출:

Cost_According_To_Customers 열한2233
AverageCostofCustomer 1787.7546545238.33

노트 : 사용할 때 집계 함수 PIVOT을 사용하면 집계를 계산하는 동안 null 값이 고려되지 않습니다.

글쎄, 그것은 기본적인 예 였지만 이제 PIVOT 절이 어떻게 작동하는지 이해합시다.

PIVOT 절의 작동

위에서 참조 할 수 있듯이 PIVOT TABLE을 생성하려면 다음 단계를 따라야합니다.

  • 피벗 할 열 선택
  • 그런 다음 소스 테이블을 선택하십시오.
  • PIVOT 연산자를 적용한 다음 집계 함수를 사용합니다.
  • 피벗 값을 언급합니다.

피벗 할 열 선택

처음에는 결과에 포함될 필드를 지정해야합니다. 이 예에서는 피벗 테이블의 AverageCostofCustomer 열을 고려했습니다. 그런 다음 열 머리글 11, 22 및 33이있는 세 개의 다른 열을 만들었습니다. 예-

얕은 대 깊은 복사 자바
Cost_According_To_Customers, [11], [22], [33]으로 'AverageCostofCustomer'를 선택합니다.

소스 테이블 선택

다음으로 피벗 테이블에 대한 소스 데이터를 반환 할 SELECT 문을 지정해야합니다. 이 예에서는 Suppliers 테이블에서 CustomerID 및 Cost를 반환합니다.

(공급 업체의 고객 ID, 비용 선택) 소스 테이블로

PIVOT 연산자를 적용한 다음 집계 함수 사용

다음으로 피벗 테이블을 생성하는 동안 사용할 집계 함수를 지정해야합니다. 이 예에서는 평균 비용을 계산하기 위해 AVG 함수를 사용했습니다.

PIVOT (AVG (비용)

피벗 값 언급

마지막으로 결과 피벗 테이블에 포함되어야하는 값을 언급해야합니다. 이러한 값은 피벗 테이블에서 열 머리글로 사용됩니다.

([11], [22], [33])) AS PivotTable의 CustomerID

이것이 PIVOT 연산자가 작동하는 방식입니다. SQL PIVOT에 대한이 기사에서 SQL UNPIVOT과 얼마나 다른지 이해하겠습니다.

SQL UNPIVOT

SQL UNPIVOT 연산자는 PIVOT의 반대 연산을 수행하는 데 사용됩니다. 열 데이터를 행 수준 데이터로 회전하는 데 사용됩니다. UNPIVOT의 구문은 PIVOT의 구문과 유사합니다. 유일한 차이점은 ' UNPIVOT” .

예:

SupplierID, AAA, BBB 및 CCC 열이있는 테이블을 작성하겠습니다. 또한 몇 개의 값을 삽입하십시오.

CREATE TABLE sampletable (SupplierID int, AAA int, BBB int, CCC int) GO INSERT INTO sampletable VALUES (1,3,5,6) INSERT INTO sampletable VALUES (2,9,2,8) INSERT INTO sampletable VALUES (3, 8,1,7) 이동

산출:

SupplierID AAA BBB CCC
하나56
2928
8하나7

이제 테이블의 피벗을 해제하려고합니다. 이를 위해 다음 코드를 참조 할 수 있습니다.

SELECT SupplierID, Customers, Products from (SELECT SupplierD, AAA, BBB, CCC FROM sampletable) p UNPIVOT (Products FOR Customers IN (AAA, BBB, CCC)) AS example GO
SupplierID 고객 제품

하나

AAA

하나

BBB

5

하나

r의 기계 학습 알고리즘

CCC

6

2

AAA

9

2

BBB

2

자바 클래스 경로 창 10 설정

2

CCC

8

AAA

8

BBB

하나

CCC

7

이것이 SQL PIVOT 및 UNPIVOT을 사용하는 방법입니다. 이것으로 우리는이 기사를 마칩니다. SQL 사용 방법을 이해 하셨기를 바랍니다. 더 자세히 알고 싶다면 MySQL 이 오픈 소스 관계형 데이터베이스에 대해 알아보고 강사 주도의 라이브 교육 및 실제 프로젝트 경험과 함께 제공됩니다. 이 교육은 MySQL을 심층적으로 이해하고 주제에 대한 숙달을 달성하는 데 도움이됩니다.

질문이 있으십니까? SQL Pivot에 대한이 기사의 주석 섹션에서 언급 해 주시면 다시 연락 드리겠습니다.