Type的取值Type valude
1 A业务
2 B业务
3 C业务表中的数据为:
name Code Type fee1 fee2 fee3
公司1 06766100063 1 20.00 30.00 40.00
公司2 06066 1 30.00 20.00 10.00
公司3 040506 2 10.00 20.00 30.00
公司4 09981 2 10.00 10.00 10.00
公司5 075523 3 20.00 20.00 20.00
公司6 06766010170 3 20.00 20.00 20.00能否用一条SQL搞定?group by rollup or groupingname Code Type fee1 fee2 fee3
公司1 06766100063 1 20.00 30.00 40.00
公司2 06066 1 30.00 20.00 10.00
A业务小计 小计 50.00 50.00 50.00
公司3 040506 2 10.00 20.00 30.00
公司4 09981 2 10.00 10.00 10.00
B业务 小计 20.00 30.00 40.00
公司5 075523 3 20.00 20.00 20.00
公司6 06766010170 3 20.00 20.00 20.00
C业务小计 小计 40.00 40.00 40.00
所有业务总计 总计 110.00 120.00 130.00
1 A业务
2 B业务
3 C业务表中的数据为:
name Code Type fee1 fee2 fee3
公司1 06766100063 1 20.00 30.00 40.00
公司2 06066 1 30.00 20.00 10.00
公司3 040506 2 10.00 20.00 30.00
公司4 09981 2 10.00 10.00 10.00
公司5 075523 3 20.00 20.00 20.00
公司6 06766010170 3 20.00 20.00 20.00能否用一条SQL搞定?group by rollup or groupingname Code Type fee1 fee2 fee3
公司1 06766100063 1 20.00 30.00 40.00
公司2 06066 1 30.00 20.00 10.00
A业务小计 小计 50.00 50.00 50.00
公司3 040506 2 10.00 20.00 30.00
公司4 09981 2 10.00 10.00 10.00
B业务 小计 20.00 30.00 40.00
公司5 075523 3 20.00 20.00 20.00
公司6 06766010170 3 20.00 20.00 20.00
C业务小计 小计 40.00 40.00 40.00
所有业务总计 总计 110.00 120.00 130.00
select * from tb
union
select a.valude,b.* from
( select '小计' code,type,sum(fee1) fee1,sum(fee2) fee2,sum(fee3) fee3 from tb group by type ) b
left join ta a on a.type=b.type
Union
select '所有业务总计' name ,'总计' code,null type,sum(fee1) fee1,sum(fee2) fee2,sum(fee3) fee3 from tb
) order by type
公司1 06766100063 1 20 30 40
公司2 06066 1 30 20 10
B业务 小计 2 20 30 40
公司4 09981 2 10 10 10
公司3 040506 2 10 20 30
C业务 小计 3 40 40 40
公司5 075523 3 20 20 20
公司6 06766010170 3 20 20 20
所有业务总计 总计 110 120 130
select * from tb
union
select a.valude,b.* from
( select '小计' code,type,sum(fee1) fee1,sum(fee2) fee2,sum(fee3) fee3 from tb group by type ) b
left join ta a on a.type=b.type
Union
select '所有业务总计' name ,'总计' code,null type,sum(fee1) fee1,sum(fee2) fee2,sum(fee3) fee3 from tb
) order by type ,fee1
decode(nvl(name,0),0,decode(nvl(Type,0),0,'合計','小計',max(code)),
decode(nvl(name,0),0,'',to_char(Type)),
sum(fee1),sum(fee2),sum(fee3)
group by rollup(Type,name)
==============================================
declare @tt table(name varchar(20),Code varchar(50),Type int,fee1 float,fee2 float,fee3 float)
insert into @tt
select '公司1', '06766100063', 1 ,20.00, 30.00 ,40.00 union all
select '公司2', '06066', 1 ,30.00, 20.00, 10.00 union all
select '公司3', '040506', 2, 10.00, 20.00, 30.00 union all
select '公司4', '09981', 2 ,10.00, 10.00, 10.00 union all
select '公司5', '075523', 3, 20.00, 20.00, 20.00 union all
select '公司6', '06766010170' ,3, 20.00, 20.00, 20.00
select isnull(name,case when Type=1 then 'A' when Type=2 then 'B' when Type=3 then 'C' else '合計' end),
case when isnull(name,'')='' then
case when isnull(Type,'')='' then '合計' else '小計' end else max(Code) end,
case when isnull(name,'')='' then '' else cast(Type as varchar(2)) end ,sum(fee1),sum(fee2),sum(fee3)
from @tt
group by Type,[name] with rollup
==============================
公司1 06766100063 1 20.0 30.0 40.0
公司2 06066 1 30.0 20.0 10.0
A 小計 50.0 50.0 50.0
公司3 040506 2 10.0 20.0 30.0
公司4 09981 2 10.0 10.0 10.0
B 小計 20.0 30.0 40.0
公司5 075523 3 20.0 20.0 20.0
公司6 06766010170 3 20.0 20.0 20.0
C 小計 40.0 40.0 40.0
合計 合計 110.0 120.0 130.0
decode(grouping_id(tb.type,ROWNUM),3,'总计_code',decode(GROUPING(ROWNUM), 1, '小计CODE', MAX(tb.code))) code,
decode(GROUPING(ROWNUM), 1, NULL, MAX(tb.type)) type,
SUM(tb.fee1) fee1,SUM(tb.fee2) fee2,SUM(tb.fee3) fee3
FROM ta, tb
WHERE ta.type = tb.type
GROUP BY ROLLUP(tb.type, ROWNUM)
我试了一下,好像,不行?
order by fee3 desc
原来那些的小计和汇总都不按原来的顺序了
???