메뉴 건너뛰기

SAP 한국 커뮤니티

유용한 sql 팁(rollup)

이동암 2007.04.19 14:21 조회 수 : 7099 추천: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)
번호 제목 글쓴이 날짜 조회 수
407 풍선도움말 Quickinfo [16] file 양키 2010.12.17 7210
406 ABAP 교육 [6] file 밤의화신 2013.09.11 7198
405 sap 화면 웹(web)으로 띄우기(ITS, SAPGUI HTML) [4] file sapjoy 2014.11.14 7181
404 오더 상태 테이블 [1] sapjoy 2006.12.12 7177
403 MiniSAP SAP Netweaver 7.0 ABAP Trial Version의 인스톨 [8] gauguin 2008.06.08 7171
402 ABAP Example sapjoy 2014.03.24 7109
» 유용한 sql 팁(rollup) 이동암 2007.04.19 7099
400 문자열 자를 때 자르는 위치에 2BYTE문자가 있는지를 체크하는 방법입니다. [8] 꿈하루 2007.12.01 7059
399 IE 9.0 설치 시 se80 다운되는 문제 해결 [5] Jey 2011.03.16 6996
398 SAPLINK - 소스 업&다운 프로그램 입니다. [5] file abaper_qj 2014.06.18 6984
397 명령어 결과에 따른 SY-SUBRC [5] sapjoy 2014.09.16 6939
396 GUI_DOWNLOAD 펑션(메소드) 사용시 Leading Zero현상 해결방법 [3] 양키(이경환) 2014.02.17 6869
395 debug 시 문장 skip 요령 [36] 하마대왕 2013.10.04 6864
394 SAP 지뢰 찾기 [10] file 버미! 2010.06.09 6864
393 AT 의 사용법(LOOP) [19] ecbase 2006.12.02 6864
392 [TIP] FILE_OPEN_DIALOG시 바탕화면을 기본경로로 설정하기 [16] file 고양이야옹 2010.06.29 6828
391 프로그램간 테이블 넘김 [6] ecbase 2006.12.02 6820
390 Difference between select single and up to 1 row [2] sapjoy 2006.12.12 6809
389 message table의 각 필드들을 모아서 하나의 문장으로 [4] 꿀단지 2011.10.11 6796
388 Email 전송 Sample [6] 양키(이경환) 2014.03.12 6759