用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

arrow
arrow
    全站熱搜

    oracleD2K 發表在 痞客邦 留言(0) 人氣()