테이블
---------------------------------------------------------------------------
A 가 나 100
A 가 나 200
A 가 다 300
B 다 가 200
B 가 가 300
-결과---------------------------------------------------------------------------------------
A 가 나 100
A 가 나 200
A 가 다 300
소계 600
B 다 가 200
B 가 가 300
소계 500
합계 1100
-----------------------------------------------------------------------------
GROUP BY ROLLUP 로하면 안될꺼 같은데 어떻게 해야되나요?
WITH t AS ( SELECT 'A' gb1, '가' gb2, '나' gb3, 100 v FROM dual UNION ALL SELECT 'A', '가', '나', 200 FROM dual UNION ALL SELECT 'A', '가', '다', 300 FROM dual UNION ALL SELECT 'B', '다', '가', 200 FROM dual UNION ALL SELECT 'B', '가', '가', 300 FROM dual ) SELECT NVL(gb1, '합계') gb1 , DECODE(GROUPING_id(gb1, gb2, gb3), 3, '소계', gb2) gb2 , gb3 , SUM(v) v FROM t GROUP BY ROLLUP(gb1, (gb2, gb3, ROWNUM)) ORDER BY gb1, gb2, gb3, ROWNUM ;