Ниже приведены простые и типовые данные, я хочу распределить баланс по всем строкам таблицы.
* ** 1003 тысяча два * Пример
Balance = 2997
Balance = -2997
Balance = 997
Balance = -997
Строки таблицы
1021 1021-955 = 66
1021 1021-1021 = 0
1021 1021-1021 = 0
Значения сверху 955+1021+1021 = 2997
Я хочу использовать для цикла или любым другим простым способом распределить баланс по всем строкам. Пожалуйста, смотрите код ниже, как я пытаюсь сделать
DECLARE
l_balance NUMBER := 2997;
l_running_bal NUMBER := 0;
l_bal_flg VARCHAR2 (1) := 'Y';
CURSOR c
IS
SELECT 1021 installment
FROM DUAL
CONNECT BY LEVEL <= 3;
BEGIN
FOR i IN c LOOP
IF l_bal_flg = 'Y' THEN
l_running_bal := l_balance - i.installment;
l_bal_flg := 'N';
ELSE
l_running_bal := l_running_bal - i.installment;
END IF;
DBMS_OUTPUT.PUT_LINE (l_running_bal);
END LOOP;
END;
Обновление
1021 66
1021 0
1021 0