Вы можете попробовать использовать sum
оконную функцию.
CREATE TABLE accounting(
ID int,
EDATE varchar(50),
DISCRIPTION varchar(50),
DR int,
CR int
);
INSERT INTO accounting VALUES (1,'19-JAN-19','cash in',1000,0);
INSERT INTO accounting VALUES (2,'19-JAN-19','cash out',0,200);
INSERT INTO accounting VALUES (3,'19-JAN-19','cash in',500,0);
INSERT INTO accounting VALUES (4,'19-JAN-19','cash out',0,200);
INSERT INTO accounting VALUES (5,'19-JAN-19','cash out',0,200);
INSERT INTO accounting VALUES (6,'19-JAN-19','cash out',0,1800);
Запрос 1 :
select
id,
edate,
discription,
dr,
cr,
sum(DR) over(order by id) - sum(CR) 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 | 800 |
| 3 | 19-JAN-19 | cash in | 500 | 0 | 1300 |
| 4 | 19-JAN-19 | cash out | 0 | 200 | 1100 |
| 5 | 19-JAN-19 | cash out | 0 | 200 | 900 |
| 6 | 19-JAN-19 | cash out | 0 | 1800 | -900 |