메뉴 건너뛰기

SAP 한국 커뮤니티

유용한 sql 팁(rollup)

이동암 2007.04.19 14:21 조회 수 : 7107 추천: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)
번호 제목 글쓴이 날짜 조회 수
107 sap 메뉴에서 표준 매뉴 전환 [1] selection장 2013.09.13 9449
106 TYPE-1 프로그램에서 실행버튼 없애기 [1] 아밥뽀 2013.09.23 9120
105 SAP GUI 730 ALV Grid 느림 현상(해결방법) [3] Dave 2013.09.27 8885
104 debug 시 문장 skip 요령 [36] 하마대왕 2013.10.04 6891
103 SAP 버퍼를 다시 설정하는 방법 Wise 멘토 2013.10.04 7490
102 TRY와 SQL [2] sapjoy 2013.12.05 5856
101 인터널 테이블 라인수 lines [8] sapjoy 2014.01.20 17292
100 숫자입력 체크(Numeric character check) [1] 양키(이경환) 2014.01.28 19648
99 자주 사용되는 String 조작 명령어 [4] 양키(이경환) 2014.01.28 3879
98 인터널 테이블의 사이즈의 의미 [4] 양키(이경환) 2014.02.12 5506
97 Progress Bar 표기 로직 [1] 양키(이경환) 2014.02.13 3601
96 Search Help 띄우기전 컬럼 정렬방법 양키(이경환) 2014.02.16 4696
95 GUI_DOWNLOAD 펑션(메소드) 사용시 Leading Zero현상 해결방법 [3] 양키(이경환) 2014.02.17 6888
94 전기기간 및 회계기간 오픈(MMPV, ob52) [4] sapjoy 2014.02.20 8219
93 User Parameter 조회 펑션 [3] 양키(이경환) 2014.03.04 3178
92 FTP File Tranfer 샘플 소스 [1] 양키(이경환) 2014.03.04 5017
91 SE16N 테이블 변경가능 모드로 전환하는방법 [8] 양키(이경환) 2014.03.12 10467
90 Email 전송 Sample [6] 양키(이경환) 2014.03.12 6800
89 report to PDF file 아밥뽀 2014.03.18 4708
88 ABAP Example sapjoy 2014.03.24 7109