Я хочу суммировать весь дебет и вычитать кредит из суммы дебета построчно.
например, сумма дебетования из двух верхних строк и вычитание кредита из строки 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;
использовать эту формулу
RETURN(NVL(:CF_ttl_blnc,0)+NVL(:debit,0)-NVL(:credit,0));
Предполагая, что вы хотите видеть итоговую сумму по строкам, я бы использовал аналитическую функцию 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) ;