[오라클 SQL] 오라클 PIVOT 절을 이용하여 로우를 컬럼으로 전환(변환)하기
- Database(데이터베이스)/Oracle
- 2019. 12. 6. 01:00
안녕하세요.
오늘은 오라클 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 |
위의 쿼리를 실행 시켜보시면 아래와 같은 데이터가 출력되는 것을 확인하실 수 있습니다.
위의 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 ('국어', '영어', '수학', '과학', '사회') ); |
실행 결과
위와 같이 로우데이터가 컬럼으로 전환돼서 데이터가 출력되는 모습을 확인하실 수 있습니다.
감사합니다.^^
'Database(데이터베이스) > Oracle' 카테고리의 다른 글
[오라클 PL/SQL] 오라클 임시 테이블 – 트랜잭션 GTT란? (0) | 2019.12.09 |
---|---|
[오라클 SQL] 오라클 UNPIVOT 이용하여 컬럼을 로우로 전환(변환)하기 (0) | 2019.12.07 |
[오라클 PL/SQL] PL/SQL 커서(Cursor) FOR문으로 생성하기 (0) | 2019.12.04 |
[오라클 PL/SQL] PL/SQL 명시적 커서(Cursor) 사용 방법 (0) | 2019.12.03 |
[오라클 PL/SQL] PL/SQL 커서(Cursor)란? (0) | 2019.12.02 |
이 글을 공유하기