不知道你所谓小计是什么意思,你可以看看下面的效果
创新互联专注于头屯河网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供头屯河营销型网站建设,头屯河网站制作、头屯河网页设计、头屯河网站官网定制、小程序定制开发服务,打造头屯河网络公司原创品牌,更为您提供头屯河网站排名全网营销落地服务。
select case when ID is null then '合计'
when CODE is null then '小计' else to_char(ID) end,
CODE,total
from (
select ID,CODE,sum(NUMBER) total from tttt
group by rollup(ID,CODE)
)
如果不是上面的意思 那么用开窗函数看看
SELECT ID,CODE,NUMBER
sum(NUMBER) OVER(partition by ID,CODE ORDER BY NUMBER ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
FROM tttt;
你试试
Select o.org_desc || '_' || i.b_company x,
i.trade_time,
i.cust_name,
i.order_id,
sum(i.suc_amount) over(partition by o.org_desc || '_' || i.b_company),
i.plug_id,
i.b_company,
sum(i.suc_amount) over()
from t_ec_trade_info i, t_ec_org_mapping o
where i.b_company = o.org_biz_numb
and (i.b_company is not null)
order by i.b_company desc
数据
create table test
(fbm int,
fxm varchar(10),
ftem varchar(10),
fje int);
insert into test values (1,'张三','吃饭',20);
insert into test values (1,'张三','睡觉',21);
insert into test values (1,'张三','起床',22);
insert into test values (4,'落笔','跑步',23);
insert into test values (5,'萝卜','运动',24);
commit;
语句:
select t.* from
(select * from test
union all
(select fbm,fxm,'合计',sum(fje) fje from test group by fbm,fxm)) t
order by fbm,case when ftem ='合计' then 1 else 0 end;
结果:
这样?
设:表结构TAB(CO char(1),ID int,VAL int) ;
Insert into TAB values('A',1,100);
Insert into TAB values('A',2,111);
Insert into TAB values('A',1,99);
Insert into TAB values('B',1,100);
Insert into TAB values('B',2,110);
Insert into TAB values('B',3,90);
分组求语句:
select CO,sum(VAL) from TAB group by CO;
你得到的结果是行还是列?
比如:
你数据库中的结果是
(1)2013年3季度 5
2013年4季度 6
还是
(2)2013年3季度 2013年4季度
5 6
你数据库中的结果是哪一个?
如果是(1)结果那么你的3、4季度应该是截取的,你可以再截取到年排一下,用groupby的分支rollup分组,用法很简单。不知道你的具体字段,你查一下吧。
如果是(2)那么结果相加就可以了,不用什么计算的。直接写select (2013年第3季度+2013年第4季度) 小计 就行。
本身就有,比如select a.b*2 from a where xx;
就是显示a表的b值的2倍。
如果想更新数据的话,可以用update set a.b=2*a.b where xx。