【发布时间】:2019-06-13 09:23:45
【问题描述】:
我的表accounting 中有一些数据。
ID EDATE DISCRIPTION DR CR
--- --------- ------------- ---------- ------
1 19-JAN-19 cash in 1000 0
2 19-JAN-19 cash out 0 200
3 19-JAN-19 cash in 500 0
4 19-JAN-19 cash out 0 200
5 19-JAN-19 cash out 0 200
6 19-JAN-19 cash out 0 1800
我想获得如下所示的借方和贷方余额的运行余额
ID EDATE DISCRIPTION DR CR BALANCE
--- --------- ------------- ------ ------ ----------
1 19-JAN-19 cash in 1000 0 1000dr
2 19-JAN-19 cash out 0 200 800dr
3 19-JAN-19 cash in 500 0 1300dr
4 19-JAN-19 cash out 0 200 1100dr
5 19-JAN-19 cash out 0 200 900dr
6 19-JAN-19 cash out 0 1800 (900)cr
我曾尝试使用 LAG FUNCITON 执行此操作,但我的代码失败了
在下面
select id,edate,discription,dr,cr,
dr-lag(dr,1,0)
over(order by id) as balance
from accounting;
我的输出是
ID EDATE DISCRIPTION DR CR BALANCE
--- --------- ------------- ------- ---- -------
1 19-JAN-19 cash in 1000 0 1000
2 19-JAN-19 cash out 0 200 -1000
3 19-JAN-19 cash in 500 0 500
4 19-JAN-19 cash out 0 200 -500
5 19-JAN-19 cash out 0 200 0
【问题讨论】:
-
你使用什么数据库引擎?
-
@juergen 我正在使用 10G_DB10.2.0.1
-
英文cash in是“credit”,通常缩写为CR,cash out是“debit”,通常缩写为DB。使用
DR提现,尤其是CR提现会让很多人感到困惑。
标签: sql oracle cumulative-sum