dxb*_*dev 1 sql database oracle oracle11g
我的数据库表中有以下记录:
Date Credit Debit Description
--------------- ------- ------- ---------------
12-24-2015 5 Purchased credit
12-20-2015 1 Consumed credit
12-15-2015 3 Purchased credit
12-08-2015 1 Consumed credit
12-08-2015 1 Consumed credit
12-07-2015 1 Consumed credit
12-04-2015 1 Consumed credit
12-03-2015 1 Consumed credit
12-01-2015 5 Purchased credit
Run Code Online (Sandbox Code Playgroud)
我想计算并显示每条记录的余额,如下所示:
Date Credit Debit Balance Description
------------ ------- ------- ------- ---------------
12-24-2015 5 0 7 Purchased credit
12-20-2015 1 2 Consumed credit
12-15-2015 3 0 3 Purchased credit
12-08-2015 1 0 Consumed credit
12-08-2015 1 1 Consumed credit
12-07-2015 1 2 Consumed credit
12-04-2015 1 3 Consumed credit
12-03-2015 1 4 Consumed credit
12-01-2015 5 0 5 Purchased credit
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我实现上述结果吗?
sum()在分析版本中产生天平使用。
select tdate, credit, debit,
sum(nvl(credit, 0)-nvl(debit, 0)) over (order by rn) balance, description
from (
select tdate, credit, debit, row_number() over (order by tdate) rn, description
from test)
order by rn desc
Run Code Online (Sandbox Code Playgroud)
如果您的表包含增加的主键,您可以使用它代替生成的行号。
测试数据和输出:
create table test (tdate date, credit number(6), debit number(6), description varchar2(20));
insert into test values (date '2015-12-24', 5, null, 'Purchased credit');
insert into test values (date '2015-12-20', null, 1, 'Consumed credit');
insert into test values (date '2015-12-15', 3, null, 'Purchased credit');
insert into test values (date '2015-12-08', null, 1, 'Consumed credit');
insert into test values (date '2015-12-08', null, 1, 'Consumed credit');
insert into test values (date '2015-12-07', null, 1, 'Consumed credit');
insert into test values (date '2015-12-04', null, 1, 'Consumed credit');
insert into test values (date '2015-12-03', null, 1, 'Consumed credit');
insert into test values (date '2015-12-01', 5, null, 'Purchased credit');
TDATE CREDIT DEBIT BALANCE DESCRIPTION
----------- ------- ------- ---------- --------------------
2015-12-24 5 7 Purchased credit
2015-12-20 1 2 Consumed credit
2015-12-15 3 3 Purchased credit
2015-12-08 1 0 Consumed credit
2015-12-08 1 1 Consumed credit
2015-12-07 1 2 Consumed credit
2015-12-04 1 3 Consumed credit
2015-12-03 1 4 Consumed credit
2015-12-01 5 5 Purchased credit
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5382 次 |
| 最近记录: |