首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

sql 请问,求N行的合计,不要小计

2013-07-04 
sql 请教,求N行的合计,不要小计如数据为:abca1张三100b1李四200c1王五300要求结果为:abca1张三100b1李四20

sql 请教,求N行的合计,不要小计
如数据为:
   a          b       c 
   a1         张三   100
   b1        李四    200
   c1         王五    300

要求结果为:
    a           b       c 
   a1         张三     100
   b1         李四     200
   c1         王五     300
   合计                  600
[解决办法]


with t1 as
(
     select 'a1' a,'张三' b,100 c from dual union all
     select 'b1' a,'李四' b,200 c from dual union all
     select 'c1' a,'王五' b,300 c from dual
)

select nvl(a,'合计') a,b,c
from 
(
select a,b,sum(c) c
from t1
group by rollup(a,b)
)
where not (a is not null and b is null)


     a     b     c
--------------------------------
1a1张三100
2b1李四200
3c1王五300
4合计600


[解决办法]
引用:

with t1 as
(
     select 'a1' a,'张三' b,100 c from dual union all
     select 'b1' a,'李四' b,200 c from dual union all
     select 'c1' a,'王五' b,300 c from dual
)

select nvl(a,'合计') a,b,c
from 
(
select a,b,sum(c) c
from t1
group by rollup(a,b)
)
where not (a is not null and b is null)


     a     b     c
--------------------------------
1a1张三100
2b1李四200
3c1王五300
4合计600



select nvl(a, '合计'), b, sum(c) c from t1 group by rollup((a, b, c))

热点排行