(DB) Oracle/SQL.통계-Pivot함수
Oracle - PIVOT 함수 - 컬럼2개인 경우
농부지기
2017. 1. 21. 13:43
[ Oracle - PIVOT 함수 - 컬럼2개인 경우 ]
1. 정의 : 매장별, 월별 이익금, 매출액 조회(2014.01 ~ 2014.06)
- 참고 : 1. PIVOT 년월 에 컬럼을 기술하지 않은 경우 2. PIVOT 컬럼이 두 개 인 경우 3. SUM() 한 후 컬럼을 지정 (이때 지정하지 않으면 오류 발생)
|
|
WITH SALE_DATA AS ( SELECT DECODE(MOD(ROWNUM, 3), 0, '강남점', 1, '역삼점', 2, '평촌점') AS SHOP_NM , TO_CHAR(ADD_MONTHS(TO_DATE('201401', 'YYYYMM'), ROUND(dbms_random.value(0,5),0)), 'YYYYMM') AS SALE_YM , ROUND(dbms_random.value( 1, 5000),0) AS PROFIT_AMT , ROUND(dbms_random.value(5000,10000),0) AS SALE_AMT FROM DUAL CONNECT BY LEVEL <= 25 ) SELECT * FROM ( SELECT SHOP_NM , SALE_YM , PROFIT_AMT FROM SALE_DATA ) PIVOT (SUM(PROFIT_AMT) AS PT_AMT, SUM(SALE_AMT) AS SA_AMT -- <-- 이곳에 컬럼 지정 FOR SALE_YM IN ('201401' -- <-- 이곳에 컬럼을 지정 하지 않은 경우 , '201402' , '201403' , '201404' , '201405' , '201406' ) );
|
결과 |
결과 컬럼이 : 년월 과 AS 후 컬럼이 결합되어 이익금컬럼과 매출액컬럼이 쌍으로 해서 반복되어 나온다..

|
|
2. 정의 : 매장별, 월별 이익금, 매출액 조회(2014.01 ~ 2014.06)
- 참고 : 1. PIVOT 년월 에 컬럼을 기술 한 경우 2. PIVOT 컬럼이 두 개 인 경우 3. SUM() 한 후 컬럼을 지정 (이때 지정하지 않으면 오류 발생)
|
|
WITH SALE_DATA AS ( SELECT DECODE(MOD(ROWNUM, 3), 0, '강남점', 1, '역삼점', 2, '평촌점') AS SHOP_NM , TO_CHAR(ADD_MONTHS(TO_DATE('201401', 'YYYYMM'), ROUND(dbms_random.value(0,5),0)), 'YYYYMM') AS SALE_YM , ROUND(dbms_random.value( 1, 5000),0) AS PROFIT_AMT , ROUND(dbms_random.value(5000,10000),0) AS SALE_AMT FROM DUAL CONNECT BY LEVEL <= 25 ) SELECT * FROM ( SELECT SHOP_NM , SALE_YM , PROFIT_AMT , SALE_AMT FROM SALE_DATA ) PIVOT (SUM(PROFIT_AMT) AS PT_AMT, SUM(SALE_AMT) AS SA_AMT -- <-- 이곳에 컬럼 지정 FOR SALE_YM IN ('201401' AS IDX1 -- <-- 이곳에 컬럼 지정 , '201402' AS IDX2 , '201403' AS IDX3 , '201404' AS IDX4 , '201405' AS IDX5 , '201406' AS IDX6 ) );
|
결과 |
결과 컬럼이 : 년월 후의 AS 컬럼과 SUM() 후 AS컬럼이 결합되어 이익금컬럼과 매출액컬럼이 쌍으로 해서 반복되어 나온다..
|
|