Вот как выглядит таблица:
create table IncomeTest (SubjectId int, Date_Value date, debit number, credit number);
insert into IncomeTest values (1, '7-SEP-2017', 11000, 0);
insert into IncomeTest values (1, '7-DEC-2017', 6000, 0);
insert into IncomeTest values (1, '9-JAN-2018', 0, 16110);
insert into IncomeTest values (1, '9-JUL-2018', 0, 619.6);
insert into IncomeTest values (1, '23-JUL-2018', 0, 270.4);
commit;
Дебет представляет собой вывод средств, кредит представляет собой ввод средств. После вставки в таблицу вы получаете следующие данные:
SubjectID | Date_value | Debit | Credit
1 9/7/2017 11000 0
1 12/7/2017 6000 0
1 1/9/2018 0 16110.0
1 7/9/2018 0 619.6
1 7/23/2018 0 270.4
Моя проблема заключается в том, что я должен рассчитать, когда пользователь погасил свой кредит и сколько он / она опоздал с платежом, что означает, что первый дебет в 11000 был полностью оплачен 9 января 2008 года: здесь я вычислите разницу в датах между этими двумя датами, и это означает, что оплата была запоздалой, но затем мне нужно взять эти 11000 от суммы кредита от 1/9/2018 и перейти к следующему дебету, а затем вычислить, когда этот следующий дебет был полностью оплачен .
Результат, который я надеюсь получить в конце:
SubjectID | Date_value | Debit | Credit | PaymentLate |
1 9/7/2017 11000 0 124
1 12/7/2017 6000 0 228
Поскольку 1-й дебет был полностью оплачен 9/9/2018, а 2-й дебет был полностью оплачен 23.07.2008 ... PaymentLate
- это разница между датой date_value
и датой, когда Общая сумма кредита достигла достаточно денег.
Я пытался использовать итоговую сумму и суммы, но у меня возникла проблема, когда я начал снимать дебет с кредита, когда он был полностью оплачен ... другими словами, я не ушел далеко.
Я использую Oracle 11.1.0.7.0 Enterprise Edition.