메뉴 건너뛰기

SAP 한국 커뮤니티

유용한 sql 팁(rollup)

이동암 2007.04.19 14:21 조회 수 : 7105 추천: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 ICON으로 DISPLAY sapjoy 2007.08.06 4027
406 너무도 당연해서 가끔 잊곤하는 공기와 같은 존재 'F1' key [5] 백혜정 2007.09.19 4034
405 Widget 한번 개발해 보세요.. [11] 해처리 2008.04.17 4038
404 interanl table header line [1] sapjoy 2006.12.05 4040
403 설명이 비교적 자세하고 원리를 알수 있는 효과적인 ABAP코딩 문서.doc [13] file 박영신 2007.07.26 4041
402 테이블 데이터 엑셀 업로드 프로그램 sapjoy 2014.06.17 4055
401 Lock objects [3] sapjoy 2006.12.20 4058
400 SAP Service Marketplace, SDN에 클릭한번으로 로그인 하는 방법 [2] sapjoy 2007.05.25 4059
399 DUMP : CONNE_IMPORT_WRONG_STRUCTURE INDX(KE) sapjoy 2015.03.18 4073
398 심플한 Progress 올려봅니다. [2] 김지성 2007.06.19 4074
397 아밥에서 다운받을시 로컬피씨에 폴더 중복 방지 소스 [3] file 양제부 2007.05.16 4086
396 Adding custom fields to CS01, CS02 and CS03 (Bill Of Materials) [1] file 노름마치 2009.07.10 4087
395 Debug program running in background [1] sapjoy 2006.12.08 4091
394 SAP R/3가 지원하는 제조전략 명신용 2007.04.03 4094
393 sap에서 메일 보내고 받기 소스와 예제 설명입니다. [7] file 박.. 2007.05.19 4094
392 Implementing Screen-exit for transaction MIGO [5] file 노름마치 2009.07.10 4119
391 ABAP에서 .Net connector로 .Net Function호출 시 한글이 깨질 경우 홍성현 2007.08.08 4120
390 간단팁2 : 특정 값으로 구분된 텍스트, 한방에 분리 및 각각의 변수에 저장 [2] 윤훈태 2007.10.15 4138
389 saplogon 할때 갑자기 윈도우 services화일 못찾을떄 요섭아부지 2008.06.12 4144
388 SAT 사용법 DEMO 영상 [3] sapjoy 2015.01.21 4150