내용 보기

작성자

관리자 (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