不知道你所謂小計是什么意思,你可以看看下面的效果
創(chuàng)新互聯(lián)專注于頭屯河網站建設服務及定制,我們擁有豐富的企業(yè)做網站經驗。 熱誠為您提供頭屯河營銷型網站建設,頭屯河網站制作、頭屯河網頁設計、頭屯河網站官網定制、小程序定制開發(fā)服務,打造頭屯河網絡公司原創(chuàng)品牌,更為您提供頭屯河網站排名全網營銷落地服務。
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)
)
如果不是上面的意思 那么用開窗函數(shù)看看
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
數(shù)據(jù)
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;
你得到的結果是行還是列?
比如:
你數(shù)據(jù)庫中的結果是
(1)2013年3季度 5
2013年4季度 6
還是
(2)2013年3季度 2013年4季度
5 6
你數(shù)據(jù)庫中的結果是哪一個?
如果是(1)結果那么你的3、4季度應該是截取的,你可以再截取到年排一下,用groupby的分支rollup分組,用法很簡單。不知道你的具體字段,你查一下吧。
如果是(2)那么結果相加就可以了,不用什么計算的。直接寫select (2013年第3季度+2013年第4季度) 小計 就行。
本身就有,比如select a.b*2 from a where xx;
就是顯示a表的b值的2倍。
如果想更新數(shù)據(jù)的話,可以用update set a.b=2*a.b where xx。