SQL*Plus, Inline view의 활용 – 단계적 조인을 위한 활용: Group by 후 Decode
/** * 수정전 */ SELECT DEPT_CD , SUM(SALE_QTY) TOTAL , SUM(DECODE(SUBSTR(S_DATE, 7, 2), '01', QTY)) S_01 , SUM(DECODE(SUBSTR(S_DATE, 7, 2), '02', QTY)) S_02 , ... , SUM(DECODE(SUBSTR(S_DATE, 7, 2), '31', QTY)) S_31 FROM SALE WHERE YYMM = :IN_DATE AND SAUP = :SAUP GROUP BY DEPT_CD;
원시 테이블 row마다 Decode를 수행
/** * 수정후 */ SELECT DEPT_CD , SUM(S_QTY) TOTAL , SUM(DECODE(DD, '01', S_QTY)) S_01 , SUM(DECODE(DD, '02', S_QTY)) S_02 , ... , SUM(DECODE(DD, '31', S_QTY)) S_31 FROM ( SELECT DEPT_CD , SUBSTR(S_DATE, 7, 2) DD , SUM(QTY) S_QTY FROM SALE WHERE YYMM = :IN_DATE AND SAUP = :SAUP GROUP BY DEPT_CD, SUBSTR(S_DATE, 7, 2) /** * 공통분모인 SUBSTR(S_DATE, 7, 2)를 * GROUP BY 절에 추가 */ ) GROUP BY DEPT_CD
원문 출처
Encore – 대용량 데이터베이스