Как составить дебетово-кредитную формулу

Я хочу суммировать весь дебет и вычитать кредит из суммы дебета построчно.
например, сумма дебетования из двух верхних строк и вычитание кредита из строки 3,4 и показ в столбце ttl blnc, но приведенный ниже результат не корректен, просто вычесть кредит из дебета

введите описание изображения здесь

мне нужен этот результат

debit   Credit  Running Total
144       0       144
264       0       408
0        264      144
0        441     -297
2464      0       2167
144       0       2311
0      27306      -24995
264       0       -24731

это мой код

  result number:=0;
begin
result:= result +  debit - credit;
return result;

1

Решение

использовать эту формулу

RETURN(NVL(:CF_ttl_blnc,0)+NVL(:debit,0)-NVL(:credit,0));
1

Другие решения

Предполагая, что вы хотите видеть итоговую сумму по строкам, я бы использовал аналитическую функцию SUM ().

SELECT
xti.dr_amount
,xti.cr_amount
,SUM(dr_amount-cr_amount) OVER (ORDER BY xti.invoice_num)  running_total
FROM
xxcjp_test_invoices       xti
ORDER BY
xti.invoice_num
;

Используйте следующие для создания тестовых данных

CREATE TABLE XXCJP_TEST_INVOICES
(invoice_num    VARCHAR2(10)
,dr_amount      NUMBER
,cr_amount      NUMBER
)
;

INSERT INTO XXCJP_TEST_INVOICES VALUES ('A001',144,0) ;
INSERT INTO XXCJP_TEST_INVOICES VALUES ('A002',264,0) ;
INSERT INTO XXCJP_TEST_INVOICES VALUES ('A003',0,264) ;
INSERT INTO XXCJP_TEST_INVOICES VALUES ('A004',0,441) ;
INSERT INTO XXCJP_TEST_INVOICES VALUES ('A005',2464,0) ;
INSERT INTO XXCJP_TEST_INVOICES VALUES ('A006',144,0) ;
INSERT INTO XXCJP_TEST_INVOICES VALUES ('A007',0,27306) ;
INSERT INTO XXCJP_TEST_INVOICES VALUES ('A008',264,0) ;
INSERT INTO XXCJP_TEST_INVOICES VALUES ('A009',55500,0) ;
0

По вопросам рекламы [email protected]