ORACLE 按月累計問題的解決方法

2021-08-26 16:41:24 字數 1288 閱讀 2997

情況一:

表結構中沒有累計的字段,我們需要展示一下累計的值,這種情況實現起來比較簡單,只是簡單的查詢就可以了,

下面我會詳細的介紹:

建表語句:

create table test1

(mon   char(6),

val   number(4)

)其中:mon為月份模式為:20060102,val為該月的數值。

我們只是需要展示一下累計的值(從該年1月至該月的累計值),這樣的執行語句為:

select

sum(val)

over (partition by substr(mon,1,4)

order by mon)

from test1

order by mon,val

eg:原表資料:

mon   val

200501 1

200502 3

200503 5

經過查詢後的結構為:

mon   val sum

200501 1   1

200502 3   4

200503 5   9

情況二:

表結構中存在累計的字段,我們需要把累計值計算之後,放在累計字段之中,這樣的實現就比較麻煩了,但是會者不難,難者不會。

下面將詳細介紹做法:

create table test1

(mon   char(6),

val   number(4),

total number(6)

)其中:mon為月份模式為:20060102,val為該月的數值,total 從該年1月至該月的累計值。

首先:將表中插入各月的資料:

mon   val total

200501 1    0

200502 3    0

200503 5    0

然後,我們用下面的語句進行相應的更新操作:

update test1 set

total= (select p.val_sum from

(select mon,sum(val) over (partition by substr(mon,1,4) order by mon) val_sum

from test1 order by mon) p

where test1.mon=p.mon)

這樣表test1中的資料會變成:

mon   val total

200501 1   1

200502 3   4

200503 5   9

Oracle按月份累計求和

原表 select to char reg date,yyyy mm regdate,count count from ep info t where 1 1 and t.reg date to date 2013 02 yyyy mm and t.reg date to date 2014 05 ...

MYSQL按月累計求和及歷史最大值問題

有以下資料,求每人每月總收入,其累計收入 即本月及其以前月份的累計收入 以及最大收入 本月及其以前月份的收入最大值 username,month,salary a,2018 01,5 a,2018 01,15 b,2018 01,5.2 a,2018 01,8.7 b,2018 01,25 a,20...

ORACLE亂碼問題的解決

使用sqlplus連線oracle資料庫的時候,老是出現?一類的字元,主要是因為 伺服器和客戶端語言設定不相同。日文環境下 伺服器端的設定為 ja16sjis,客戶端沒有作設定就出現了上述現象。請將環境變數設值為 csh setenv nls lang american japan.ja16sjis...