[오라클 SQL] 오라클 PIVOT 절을 이용하여 로우를 컬럼으로 전환(변환)하기



안녕하세요.

 

오늘은 오라클 PIVOT 절을 이용하여 로우를 컬럼으로 전환하는 방법에 대해서 설명해 드리려고 합니다.

 

오라클에서 로우를 컬럼으로 전환하는 방법은 여러가지가 있겠지만, 그 중에서 오늘은 PIVOT 함수를 이용하여 변환해 보도록 하겠습니다.


참고로, PIVOT 절은 오라클 11g 환경 이상부터 사용이 가능합니다!

 

먼저 아래 쿼리를 이용하여 SCORE_TBL이라는 임시 테이블을 만들었습니다.


 

SCORE_TBL


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

WITH 

SCORE_TBL AS

(

    SELECT  '2019' AS YEAR, '중간고사' AS GUBUN, '국어' AS SUBJECTS, '100' AS SCORE

    FROM DUAL    

    UNION ALL

    SELECT  '2019' AS YEAR, '중간고사' AS GUBUN, '영어' AS SUBJECTS, '95' AS SCORE

    FROM DUAL    

    UNION ALL 

    SELECT  '2019' AS YEAR, '중간고사' AS GUBUN, '수학' AS SUBJECTS, '90' AS SCORE

    FROM DUAL 

    UNION ALL 

    SELECT  '2019' AS YEAR, '중간고사' AS GUBUN, '과학' AS SUBJECTS, '85' AS SCORE

    FROM DUAL 

    UNION ALL 

    SELECT  '2019' AS YEAR, '중간고사' AS GUBUN, '사회' AS SUBJECTS, '40' AS SCORE

    FROM DUAL

)

SELECT *

FROM SCORE_TBL

Colored by Color Scripter

cs

 

위의 쿼리를 실행 시켜보시면 아래와 같은 데이터가 출력되는 것을 확인하실 수 있습니다.

 


위의 SCORE_TBL 테이블을 보시게 되면 컬럼은 YEAR, GUBUN, SUBJECTS, SCORE 4개의 컬럼으로 각 데이터들이 알맞게 들어 있는 모습을 확인하실 수 있습니다.

 

그럼 이제 위의 로우 데이터들중 SUBJECT 컬럼 데이터들인 국어”, “영어”, “수학”, “과학”, “사회이 로우 데이터들을 컬럼으로 전환하여 보도록 하겠습니다.


PIVOT 절을 이용하여 로우 데이터를 컬럼으로 전환


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

WITH 

SCORE_TBL AS

(

    SELECT  '2019' AS YEAR, '중간고사' AS GUBUN, '국어' AS SUBJECTS, '100' AS SCORE

    FROM DUAL    

    UNION ALL

    SELECT  '2019' AS YEAR, '중간고사' AS GUBUN, '영어' AS SUBJECTS, '95' AS SCORE

    FROM DUAL    

    UNION ALL 

    SELECT  '2019' AS YEAR, '중간고사' AS GUBUN, '수학' AS SUBJECTS, '90' AS SCORE

    FROM DUAL 

    UNION ALL 

    SELECT  '2019' AS YEAR, '중간고사' AS GUBUN, '과학' AS SUBJECTS, '85' AS SCORE

    FROM DUAL 

    UNION ALL 

    SELECT  '2019' AS YEAR, '중간고사' AS GUBUN, '사회' AS SUBJECTS, '40' AS SCORE

    FROM DUAL

    UNION ALL

    SELECT  '2019' AS YEAR, '기말고사' AS GUBUN, '국어' AS SUBJECTS, '50' AS SCORE

    FROM DUAL    

    UNION ALL

    SELECT  '2019' AS YEAR, '기말고사' AS GUBUN, '영어' AS SUBJECTS, '100' AS SCORE

    FROM DUAL    

    UNION ALL 

    SELECT  '2019' AS YEAR, '기말고사' AS GUBUN, '수학' AS SUBJECTS, '80' AS SCORE

    FROM DUAL 

    UNION ALL 

    SELECT  '2019' AS YEAR, '기말고사' AS GUBUN, '과학' AS SUBJECTS, '45' AS SCORE

    FROM DUAL 

    UNION ALL 

    SELECT  '2019' AS YEAR, '기말고사' AS GUBUN, '사회' AS SUBJECTS, '90' AS SCORE

    FROM DUAL

)

SELECT *

FROM

(

    SELECT YEAR, GUBUN, SUBJECTS, SCORE

    FROM SCORE_TBL

)

PIVOT

(

    SUM(SCORE)

    FOR SUBJECTS IN ('국어''영어''수학''과학''사회')

);

Colored by Color Scripter

cs

 

실행 결과



 

위와 같이 로우데이터가 컬럼으로 전환돼서 데이터가 출력되는 모습을 확인하실 수 있습니다.

 

감사합니다.^^ 



728x90

이 글을 공유하기

댓글

Designed by JB FACTORY