이렇게 나오도록 해야하는 게 조건입니다.
생각보담 어렵더군요.
이리저리 쿼리를 돌려보아도, 어렵네요.
고수님중 아시는 분들 계시면, 도움바랍니다.
수고하세요. ^^
우선 테이블 형태 부터 올려 주세요.
그래야 쿼리를 짤수가 있을 것 같은데요.
아~또 위 결과나오는 것을 다시 자세히 설명좀 해주세요.
이해가 잘 안되는 부분이 있어서요.^^
대략적으로 다음과 같이 하시면 될듯...
select 부서번호
, sum(decode(누구, 'manager', Amt, 0)) AS manager
, sum(decode(누구, 'cleak', Amt, 0)) AS cleak
, sum(decode(누구, 'manager', 0, 'cleak', 0, Amt)) AS Others
, sum(Amt) AS total
FROM 테이블
WHERE 조건
GROUP BY rollup(부서번호)
죄송합니다. ^^;;
일반적인 EMP테이블입니다.
SQL> DESC EMP 이름 널? 유형 ------------------------------------------------ --------
EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2)
===============================================================
윗분말씀대로 응용하니까,
select DEPTNO, sum(decode(job,'MANAGER',SAL)) "MANAGER", sum(decode(job,'CLERK',SAL)) "CLERK", sum(decode(job,'MANAGER',NULL,'CLERK',NULL,SAL)) "ETC", SUM(SAL) "TOTAL"from EMPGROUP BY DEPTNO
이렇게 나오는대요..
==========================================================
DEPTNO MANAGER CLERK ETC TOTAL------ ---------- ---------- ---------- ---------- 10 2450 1300 5000 8750 20 2975 1900 6000 10875 30 2850 950 5600 9400
===========================================================
하단에도 Total값이 나오도록 할 수 없을까요? ^^
제가 적은 글에는 group by rollup(부서코드)라고 적었는데,
님께서는 rollup을 빼뜨리신듯....
rollup을 사용하시면 부서코드는 null이면서 해당 열들의 합계가 나올텐데요...^^
select decode(re.rnum,1,tot.dep,'Total') dep, sum(tot.ma) ma, sum(tot.cl) cl, sum(tot.etc) etc, sum(tot.total) totalfrom (select to_char(e.deptno) dep, sum(decode(e.job,'MANAGER',e.sal)) ma, sum(decode(e.job,'CLERK',e.sal)) cl, sum(decode(e.job,'MANAGER',null,'CLERK',null,e.sal)) etc, sum(e.sal) total from emp e group by e.deptno ) tot, (select rownum rnum from emp where rownum <= 2 ) regroup by decode(re.rnum,1,tot.dep,'Total');
dep ma cl etc total
10 2450 1300 5000 8750 20 2975 1900 6000 10875 30 2850 950 5600 9400Total 8275 4150 16600 29025
이상...이렇게 나오네요. 나그네님이 사용한 rollup 을 정확히 몰라서
억지로(?) 만들었네요.^^이히~