select * from test
1 00 001 大 5 15
2 00 001 中 25 75
3 00 001 小 85 25
4 00 002 大 65 35
5 00 002 中 95 85
6 00 002 小 85 25
7 01 001 大 16 14
8 01 001 中 290 75
9 01 001 小 83 22
SELECT num
,flg
,(CASE WHEN GROUPING(num)=1 THEN 'TOTAL'
WHEN GROUPING(type)=1 THEN 'SUBTOTAL'
ELSE type
END)
,sum(number1)
,sum(number2)
FROM test
GROUP BY ROLLUP(num,flg,type)
ORDER BY num NULLS LAST,flg,DECODE(type,'大',1,'中',2,'小',3,4);
1 00 001 大 5 15
2 00 001 中 25 75
3 00 001 小 85 25
4 00 001 SUBTOTAL 115 115
5 00 002 大 65 35
6 00 002 中 95 85
7 00 002 小 85 25
8 00 002 SUBTOTAL 245 145
9 00 SUBTOTAL 360 260
10 01 001 大 16 14
11 01 001 中 290 75
12 01 001 小 83 22
13 01 001 SUBTOTAL 389 111
14 01 SUBTOTAL 389 111
15 TOTAL 749 371