用over()解決如內容所示的所示
日期 收入 支出
2000/3/1 50 30
2000/3/2 45 60
2000/3/5 60 10
2000/3/5 60 10
結果為:
日期 收入 支出 餘額
2000/3/1 50 30 20
2000/3/2 45 60 5
2000/3/5 120 20 105
----------------------------------------------
Create Table aa
(rq Date,
sr Number,
zc Number
);
Insert Into aa Values(Sysdate,100,80);
Insert Into aa Values(Sysdate+1,70,87);
Insert Into aa Values(Sysdate+2,10,15);
Insert Into aa Values(Sysdate+3,40,50);
Commit;
Select rq 日期,
sr 收入,
zc 支出,
abs(Sum(sr-zc) over(Order By rq)) 餘額
From aa;
日期 收入 支出 餘額
----------- ---------- ---------- ----------
2005.02.17 100 80 20
2005.02.18 70 87 3
2005.02.19 10 15 2
2005.02.20 40 50 12
OR
Select
rq ,
sr ,
zc ,
abs(sum(sr-zc) over(Order By rq)) lj
From (Select trunc(rq) rq,Sum(sr) sr,Sum(zc) zc From aa Group By trunc(rq));
先按日期歸組(一般可能是日期相同有時間的區別,故使用Trunc)
Select trunc(rq) rq,Sum(sr) sr,Sum(zc) zc From aa Group By trunc(rq)
Trunc(m,n)精度函數(截斷)
Trunc(123.45,6)=123.45
Trunc(123.45,1)=123.4
Trunc(123.45)=123
Trunc(123.45,-2)=10
時間精確度:tranc(日期,精確度)
------------------
trunc(sysdate,'yyyy')=2004.01.01 trunc(sysdate,'mm' )=2004.02.01
trunc(sysdate,'dd' )=2004.02.16 trunc(sysdate,'day')=2004.02.15
trunc(sysdate,'hh24')=2004.02.16 22:00:00 trunc(sysdate,'mi' )=2004.02.16 22:13:00