기술 정보
home
채널 소개
home

SUM(DECODE()) 구문을 활용한 데이터 PIVOT 처리 방법

문서 유형
기술 정보
분야
관리/환경설정
키워드
1 more property

개요

데이터 PIVOT을 수행하는 방법은 아래와 같이 세 가지 방법이 있습니다.
1.
SUM(DECODE()) 구문을 이용한 피벗
2.
프로시저를 이용한 동적 피벗
3.
PIVOT 구문을 이용한 피벗
이 문서에서는 SUM(DECODE()) 구문을 활용한 데이터 PIVOT 처리 방법을 설명합니다.
참고
테스트 환경은 Tibero 6 (DB 6.0 FS06_CS_1703) 버전 환경을 사용했습니다.

방법

테스트 테이블 생성

CREATE TABLE TEST( YEARDATA VARCHAR(4), DATA1 VARCHAR(6), DATA2 VARCHAR(6) );
SQL
복사

데이터 입력

INSERT INTO TEST VALUES ('1990','100000','999999'); INSERT INTO TEST VALUES ('1991','100001','999998'); INSERT INTO TEST VALUES ('1992','100002','999997'); INSERT INTO TEST VALUES ('1993','100003','999996'); INSERT INTO TEST VALUES ('1994','100004','999995'); INSERT INTO TEST VALUES ('1995','100005','999994'); INSERT INTO TEST VALUES ('1996','100006','999993'); INSERT INTO TEST VALUES ('1997','100007','999992'); INSERT INTO TEST VALUES ('1998','100008','999991'); INSERT INTO TEST VALUES ('1999','100009','999990'); INSERT INTO TEST VALUES ('2000','100010','999989'); INSERT INTO TEST VALUES ('2001','100011','999988'); COMMIT; SELECT * FROM TEST; YEARDATA DATA1 DATA2 -------- ------ ------ 1990 100000 999999 1991 100001 999998 1992 100002 999997 1993 100003 999996 1994 100004 999995 1995 100005 999994 1996 100006 999993 1997 100007 999992 1998 100008 999991 1999 100009 999990 2000 100010 999989 2001 100011 999988 12 rows selected.
SQL
복사

SUM(DECODE()) 구문을 이용한 데이터 PIVOT

1.
첫번째 열의 세번째 로우까지 PIVOT 수행하여 출력합니다.
SELECT SUM(DECODE(YEARDATA,'1990',NVL(DATA1,0),'')) AS "1990" , SUM(DECODE(YEARDATA,'1991',NVL(DATA1,0),'')) AS "1991" , SUM(DECODE(YEARDATA,'1992',NVL(DATA1,0),'')) AS "1992" FROM TEST; 1990 1991 1992 ---------- ---------- ---------- 100000 100001 100002 1 row selected.
SQL
복사
2.
두번째 열까지 포함하여 PIVOT 수행합니다.
이때 UNION을 이용하여 두번째 열 부분을 추가합니다.
SELECT SUM(DECODE(YEARDATA,'1990',NVL(DATA1,0),'')) AS "1990" , SUM(DECODE(YEARDATA,'1991',NVL(DATA1,0),'')) AS "1991" , SUM(DECODE(YEARDATA,'1992',NVL(DATA1,0),'')) AS "1992" FROM TEST UNION SELECT SUM(DECODE(YEARDATA,'1990',NVL(DATA2,0),'')) AS "1990" , SUM(DECODE(YEARDATA,'1991',NVL(DATA2,0),'')) AS "1991" , SUM(DECODE(YEARDATA,'1992',NVL(DATA2,0),'')) AS "1992" FROM TEST; 1990 1991 1992 ---------- ---------- ---------- 100000 100001 100002 999999 999998 999997 2 rows selected
SQL
복사