총계 내는 쿼리 궁금한게 있습니다. 0 3 2,388

by 모르는사람 [Oracle 기초] GROUP BY JOIN SCOTT [2018.03.02 10:07:07]


  안녕하세요 처음 질문을 해봅니다.

SELECT nvl(decode(T4.no,'1',T3.dname),'총계') DNAME,
         sum(CLERK) CLERK, sum(MANAGER) MANAGER,
         sum(ETC) ETC, sum(DEPT_SAL) DEPT_SAL
    FROM (SELECT T2.DNAME, CLERK, MANAGER, ETC, DEPT_SAL
            FROM (SELECT DEPTNO
                        ,SUM(DECODE(JOB,'CLERK',SAL)) CLERK
                        ,SUM(DECODE(JOB,'MANAGER',SAL)) MANAGER
                        ,SUM(DECODE(JOB,'CLERK',NULL,'MANAGER',NULL,SAL)) ETC
                        ,SUM(SAL) DEPT_SAL
                    FROM EMP
                   GROUP BY DEPTNO) T1, DEPT T2
          WHERE T1.DEPTNO = T2.DEPTNO) T3,
           (SELECT '1' no from dual
             union all
            select '2' from dual) T4
   group by decode(T4.no,'1',dname) ;

이렇게 코딩이 있는데 총계를 맨 아래 출력하고 싶습니다.

총계가 맨 위로 나오는데 맨 아래로 출력하려면 어떻게 해야하나요?

by 우리집아찌 [2018.03.02 10:18:53]

   ORDER BY DECODE(DNAME,'총계',2,1) 

by 모르는사람 [2018.03.02 10:26:20]

감사합니다ㅠㅠ 그냥 오더바이 쓰면 되는군요..


by 마농 [2018.03.02 10:48:04]

정렬 구문이 없으면 정렬결과가 보장되지 않습니다.
총계는 ROLLUP 을 이용해 보세요.
 

SELECT NVL(d.dname, '총계') dname
     , SUM(DECODE(job, 'CLERK'  , sal)) clerk
     , SUM(DECODE(job, 'MANAGER', sal)) manager
     , SUM(DECODE(job, 'CLERK', null, 'MANAGER', null, sal)) etc
     , SUM(sal) dept_sal
  FROM emp  e
     , dept d
 WHERE e.deptno = d.deptno
 GROUP BY ROLLUP(d.dname)
 ORDER BY d.dname NULLS LAST
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입