안녕하세요 처음 질문을 해봅니다.
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) ;
이렇게 코딩이 있는데 총계를 맨 아래 출력하고 싶습니다.
총계가 맨 위로 나오는데 맨 아래로 출력하려면 어떻게 해야하나요?
정렬 구문이 없으면 정렬결과가 보장되지 않습니다.
총계는 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 ;