내용 보기

작성자

관리자 (IP : 172.17.0.1)

날짜

2020-07-09 04:51

제목

[MSSQL] PIVOT 사용하기



- PIVOT 이란?

 

   테이블의 데이터중 특정 데이터를 컬럼으로 사용하여 요약된 결과를 만들어 표시하는 것을 말합니다.

?

 

 - MSSQL SELECT 사용방법

 

?   SELECT [별칭] FROM [테이블명] PIVOT (

      [집계함수]([집계할 컬럼명]) FOR [대상 컬럼명] IN ([PIVOT시 컬럼이 될 컬럼값])

   ) AS [PIVOT 테이블 별칭] 

?

 

 - 테이블 생성

 

   CREATE TABLE dbo.성적 (

       반정보 varchar(3) NOT NULL,

       과목 varchar(4) NOT NULL,

       점수 int NOT NULL

   )

?

 

 - 데이터 입력

 

   INSERT INTO dbo.성적 (반정보, 과목, 점수) VALUES ('A반', '국어', 90) 

   INSERT INTO dbo.성적 (반정보, 과목, 점수) VALUES ('A반', '수학', 85)
   INSERT INTO dbo.성적 (반정보, 과목, 점수) VALUES ('B반', '국어', 100)
   INSERT INTO dbo.성적 (반정보, 과목, 점수) VALUES ('B반', '수학', 90)

 

 

 - 테이블 입력 결과 확인?

 

   SELECT * FROM dbo.성적

 

?

반정보

과목

점수

A반

국어

90

A반

수학

85

B반

국어

100

B반

수학

90

 

 - 예제 1

 

   성적 테이블의 과목(국어, 수학)을 기준으로 점수중 가장 높은 점수를 표시하여 PIVOT 테이블을 생성하시오.

 

? 

 - 예제 1 쿼리

 

   SELECT 반정보, 국어, 수학 FROM dbo.성적 PIVOT (

      MAX(점수) FOR 과목 IN (국어, 수학)

   ) AS PVT

 

?

반정보

국어

수학

A반

90

85

B반

100

90

 

 - 예제 2

 

   아래의 데이터를 추가하고 성적 테이블의 반정보(A반, B반)을 기준으로 점수를 합산하여 PIVOT 테이블을 생성하시오.

 

? 

반정보

과목

점수

A반

국어

75

B반

영어

80

 

 - 데이터 입력

 

   INSERT INTO dbo.성적 (반정보, 과목, 점수) VALUES ('A반', '국어', 75)

   INSERT INTO dbo.성적 (반정보, 과목, 점수) VALUES ('B반', '영어', 80)

 

 

 - 예제 2 쿼리

 

   SELECT 과목, A반, B반 FROM dbo.성적 PIVOT (

      SUM(점수) FOR 반정보 IN (A반, B반)

   ) AS PVT

 

?

과목

A반

B반

국어

165

100

수학

85

90

영어

NULL

80

 

출처1

http://blog.naver.com/diceworld/220172666346

출처2