oracle列求和,oracle中列中的資料求和

時間 2021-10-27 04:37:38

1樓:匿名使用者

測試資料

create table test

(mount int,

unit varchar2(10));

insert into test values (100,'ml');

insert into test values (100,'ml');

insert into test values (1,'u');

insert into test values (200,'ml');

insert into test values (1,'u');

insert into test values (200,'ml');

執行select replace(wm_concat(t.mount||unit),',','+')

from

(select sum(mount) mount,unit from test where unit in ('ml','u') group by unit order by unit desc) t

結果如果執行不了,把wm_concat改換成sys.wm_concat

2樓:匿名使用者

上面回答的太好了,**並茂

oracle中列中的資料求和

3樓:匿名使用者

select sum(a) from 表名; 這個語句,要達到你們目的,除非你這個表中只有這三行資料。

4樓:匿名使用者

select sum(a) from 表名

求教oracle 資料庫 欄位求和語句

5樓:手機使用者

select t.bm,

(select count(*) from a where a.zl1=1 and a.bm=t.bm group by a.bm) as zl1,

(select count(*) from a where a.zl1=2 and a.bm=t.bm group by a.bm) as zl1,

(select count(*) from b where b.bm=t.bm group by b.bm) as qt

from a tclwyzx希望有所提示,有空到51cto,365testing進一步交流!

6樓:匿名使用者

select sum(netweight) from weight

7樓:匿名使用者

select sum(netweight) 「淨重合計」 from weight;

oracle多列求和語句合併

8樓:青鳥中關村專家

可以使用多表連線查詢實現:

1、先對錶1進行分組聚合查詢,並將查詢結果定義別名2、在對錶2進行分組聚合查詢,並將查詢結果定義別名3、將兩個查詢結果進行連線查詢,在從中查詢想要的結果列資訊select b.aa, b.bb, c.

ccfrom

(select 表1.aa, sum(表1.bb) cntbb from 表1 group by 表1.aa) b,

(select 表2.aa, sum(表2.cc) cntcc from 表2 group by 表2.aa) c

where b.aa=c.aa

and b.cntbb <> c.cntcc

9樓:匿名使用者

用子查詢吧

select nstzhsdhj,pgqrshj,nstzhsdhj-pgqrshj

from (select sum(t.nstzhsd) as nstzhsdhj from sds_ksmd t),(select sum(t1.pgqrs) as pgqrshj from sds_ksjmbksqrb t1)

你第三條語句是個笛卡爾積,它會將sds_ksmd的每一行與sds_ksjmbksqrb的每一行連線產生新行,產生的行數是兩個錶行數的乘積,所以結果肯定不一樣,除非你兩個表都只各有一行資料

10樓:匿名使用者

from sds_ksmd t,sds_ksjmbksqrb t1是全連線,會出現count(t)*count(t1)條資料當然算的不準了.

這是個例子:select (select count(*) from lcp_sys_ext_db) as tt,(select count(*) from lcp_cp_assist) as dd from dual

11樓:

說的詳細點想怎麼合,寫個例子看看,還有,你最後一條有很嚴重的問題,建議你先搞清楚兩個表的關係最後一個這麼差肯定是不對的

oracle中如何對已求出和的欄位再求和

12樓:匿名使用者

1. 如果,要對每一個 a.lotid 都計算一次各類的彙總值的話,只需在select a.lotid,後再加一子句即可,加後為:

select a.lotid,

sum(case when a.line in ('bml','blu','grn','red','rpl','ocl','ial','ibl','anl','psl','fil') then a.times else 0 end) as all_class,

sum(decode(a.line, 'bml', a.times)) as bml,

sum(decode(a.line, 'blu', a.times)) as blu,

sum(decode(a.line, 'grn', a.times)) as grn,

sum(decode(a.line, 'red', a.times)) as red,

sum(decode(a.line, 'rpl', a.times)) as rpl,

sum(decode(a.line, 'ocl', a.times)) as ocl,

sum(decode(a.line, 'ial', a.times, 'ibl', a.times)) as ito,

sum(decode(a.line, 'anl', a.times)) as anl,

sum(decode(a.line, 'psl', a.times)) as psl,

sum(decode(a.line, 'fil', a.times)) as fil

from (select t.oper_id as line,

substr(t.lot_id, 1, 3) as lotid,

(to_date(t.end_timestamp, 'yyyy-mm-dd hh24:mi:ss') -

to_date(t.start_timestamp, 'yyyy-mm-dd hh24:mi:ss')) * 24 * 60 as times

from report.st_abnormal t

where error_second_code in ('n002', 'b001', 'b002')

and t.txn_date >= '2014-03-01'

and t.txn_date < = '2014-03-31') a

group by a.lotid

2. 如果要對所有的 a.lotid計算所有類別的彙總的話,可用下面語句(較好):

select sum(case when a.line in ('bml','blu','grn','red','rpl','ocl','ial','ibl','anl','psl','fil') then a.times else 0 end) as all_sum

from (select t.oper_id as line,

substr(t.lot_id, 1, 3) as lotid,

(to_date(t.end_timestamp, 'yyyy-mm-dd hh24:mi:ss') -

to_date(t.start_timestamp, 'yyyy-mm-dd hh24:mi:ss')) * 24 * 60 as times

from report.st_abnormal t

where error_second_code in ('n002', 'b001', 'b002')

and t.txn_date >= '2014-03-01'

and t.txn_date < = '2014-03-31') a

也可在你的語句外再套一層(此法效率不高,不建議):

select sum(bml+blu+grn+red+rpl+ocl+ito+anl+psl+fil) as all_sum

from

(select a.lotid,

sum(decode(a.line, 'bml', a.times)) as bml,

sum(decode(a.line, 'blu', a.times)) as blu,

sum(decode(a.line, 'grn', a.times)) as grn,

sum(decode(a.line, 'red', a.times)) as red,

sum(decode(a.line, 'rpl', a.times)) as rpl,

sum(decode(a.line, 'ocl', a.times)) as ocl,

sum(decode(a.line, 'ial', a.times, 'ibl', a.times)) as ito,

sum(decode(a.line, 'anl', a.times)) as anl,

sum(decode(a.line, 'psl', a.times)) as psl,

sum(decode(a.line, 'fil', a.times)) as fil

from (select t.oper_id as line,

substr(t.lot_id, 1, 3) as lotid,

(to_date(t.end_timestamp, 'yyyy-mm-dd hh24:mi:ss') -

to_date(t.start_timestamp, 'yyyy-mm-dd hh24:mi:ss')) * 24 * 60 as times

from report.st_abnormal t

where error_second_code in ('n002', 'b001', 'b002')

and t.txn_date >= '2014-03-01'

and t.txn_date < = '2014-03-31') a

group by a.lotid

)請根據需要,具體斟酌

oracle多列求和語句合併,oracle中某列是數值列,如何相加並顯示出來,oracle語句要的是

青鳥中關村專家 可以使用多表連線查詢實現 1 先對錶1進行分組聚合查詢,並將查詢結果定義別名2 在對錶2進行分組聚合查詢,並將查詢結果定義別名3 將兩個查詢結果進行連線查詢,在從中查詢想要的結果列資訊select b.aa,b.bb,c.ccfrom select 表1.aa,sum 表1.bb c...

原oracle如何修改列的資料型別

用alter語句進行修改。語法 alter table 表名 modify 欄位名 欄位型別 欄位長度 說明 如果是內date等沒有長度的型別,字容段長度部分可以省略。如 目前test表屬性如下 要將name列的欄位型別改為date型別,可用如下語句 alter table test modify ...

Oracle查詢去除重資料,oracle查詢出來的資料怎麼消除重複資料?

1 distinct 關鍵字的用法 distinct 關鍵字後面的欄位組合去重 distinct 必須 select distinct id from test 結果 根據id 去重 select distinct id,name from test 2 group by 分組去重 select i...