메뉴 건너뛰기

SAP 한국 커뮤니티

유용한 sql 팁(rollup)

이동암 2007.04.19 14:21 조회 수 : 7106 추천:54

ORACLE 8.1.5 이전 버전에서는 SUBTOTAL GRAND TOTAL을 구하기 위해 아래의 SQL과 같이 COPY_T를 이용하여 복제를 한 후 SUBTOTAL GRAND TOTAL을 구하는 방법을 사용하였다.


select /*+ ordered */
        decode(no,1,dname,2,dname,'total'),
        decode(no,1,job,2,'subtotal'),
        decode(no,1,empno),
        sum(sal)
  from (
        select /*+ ordered use_nl(emp dept) */
               empno,ename,hiredate,dname,job,sal
          from emp , dept
         where dept.deptno = emp.deptno ) a,copy_t b
 where no <= 3
 group by decode(no,1,dname,2,dname,'Grand total'),
          decode(no,1,job,2,'Subtotal'),
          decode(no,1,empno)


그런데 ORACLE 8.1.5부터 ROLLUP CUBE가 지원되면서 SUBTOTAL GRAND TOTAL을 구하기가 훨씬 쉬워졌다.그런데 ROLLUP CUBE는 상위그룹으로만 집계를 하는데는 용이하지만 세부내역과 함께 SUB TOTAL GRAND TOTAL을 보고자 할 경우에는 약간의 문제가 생긴다. 다음은 이러한 경우에 ROLLUP을 이용하여 SUBTOTAL GRAND TOTAL을 구하고 세부내역을 나타내기 위한 사례이다.


SELECT DECODE(GROUPING(dname), 1, 'All Departments',dname) AS dname,
       DECODE(GROUPING(job), 1, 'All Jobs', job) AS job,
       DECODE(GROUPING(empno), 0, empno) AS empno,
       SUM(sal)
  FROM EMP, DEPT
 WHERE DEPT.DEPTNO = EMP.DEPTNO
GROUP BY rollup( DNAME, JOB,empno)
having grouping(empno) = 0 or grouping(job) = 1 or grouping(dname) = 1


ROLLUP을 이용하면 데이터 복제에 대한 부담과 GROUP BY에 대한 부담이 줄어들어 대상 건수가 많으면 많을수록 효과적이다.


* e-abap님에 의해서 게시물 이동되었습니다 (2007-04-19 14:31)
번호 제목 글쓴이 날짜 조회 수
547 ABAP TUNNING sapjoy 2012.03.12 234723
546 New function vs Old function(obsolete) sapjoy 2014.03.31 127772
545 테이블Active시 (Warnings Occurred During Activation) 안나오게하는방법 [6] 양키 2012.03.29 99709
544 자주 사용하는 String 조작 명령어 [7] 양키(이경환) 2015.01.13 34950
543 collect 구문 [4] sapjoy 2006.12.03 27038
542 사용자 패스워드 변경 함수, 창 [11] sapjoy 2009.12.21 25825
541 R/3 용어 정의 Definitions [4] sapjoy 2007.01.23 23898
540 BAPI_PR_CREATE 구매요청 생성시에 사용하세요 [2] 노름마치 2007.12.10 23707
539 SELECT statement D.Y.Kim 2007.07.20 23647
538 문자열에 있는 값이 숫자만으로 되어있는지 문자가 포함됐는지 체크하는 함수 [3] 꿀단지 2011.10.11 19906
537 LIKE와 TYPE의 차이 [13] sapjoy 2006.12.06 19723
536 숫자입력 체크(Numeric character check) [1] 양키(이경환) 2014.01.28 19637
535 SDN -> SCN 변경되면서 Contents별로 바뀐 LINK 모음 [13] Wise 멘토 2012.07.06 19045
534 ALV LIST 진행시 LAYOUT 속성값 [18] kwon09 2007.04.11 17363
533 ABAP 핵심정리 [23] SARA 2007.03.14 17338
532 인터널 테이블 라인수 lines [8] sapjoy 2014.01.20 17272
531 ABAP 구문 총정리 [39] file Wise 멘토 2008.11.24 17171
530 FOR ALL ENTRIES IN 구문 사용시 select 필드 선택시 주의사항. [7] 나침반친구 2007.03.13 17031
529 SYST 시스템 변수 정리 [5] 아밥뽀 2014.08.23 17006
528 프로그램 정보(프로그램 리스트, PROGRAM LIST, PROGRAM TABLE) [3] sapjoy 2007.02.23 16840