У меня есть 3 таблицы счетов-фактур, платежей и процентных ставок. Для простоты я представляю каждую из таблиц следующим образом.
Таблица счетов-фактур имеет следующие столбцы (InvNum является первичным ключом)
+--------------+-------------+---------------+
| InvNum | InvDate | InvAmt |
+--------------+-------------+---------------+
| 123 | 2017-03-09| 15000 |
| 456 | 2017-01-13| 20000 |
+--------------+-------------+---------------+
Таблица платежей выглядит следующим образом (InvNum в таблице платежей - это внешний ключ, который ссылается на таблицу счетов-фактур выше
+--------------+------------+----------+
| payment_date | InvNum | amount |
+--------------+------------+----------+
| 2017-08-10 | 123 | 5000 |
| 2017-08-15 | 456 | 3000 |
| 2017-09-15 | 123 | 3000 |
| 2017-10-11 | 456 | 4000 |
| 2017-10-16 | 123 | 3500 |
| 2017-11-10 | 123 | 3000 |
| 2017-11-15 | 456 | 2500 |
+--------------+------------+----------+
My InterestRate выглядит примерно так
+--------------+-------+
| ResetDate | IntRate|
+--------------+--------+
| 2016-01-01| 10 |
| 2017-06-08| 10.25 |
| 2017-11-03| 10.67 |
| 2018-05-03| 10.83 |
| 2018-07-29| 10.72 |
| 2019-01-01| 10.67 |
+------------+----------+
Мне нужно рассчитать проценты по каждому Счету после рассмотрения каждого платежа и окончательного остатка по счету (в случае, если он не был полностью оплачен). Финальный стол должен выглядеть примерно так
InvNum IntFrom IntTo Amount IntRate Interest Payment Balance
123 2017-03-09 2017-06-07 15000 10 xxx 0 15000
123 2017-06-08 2017-08-10 15000 10.25 yyy 5000 10000
123 2017-08-11 2017-09-15 10000 10.25 zzz 3000 7000
123 2017-09-16 2017-10-16 7000 10.25 aaa 3500 3500
123 2017-10-17 2017-11-02 3500 10.67 bbb 0 3500
123 2017-11-03 2017-11-15 3500 10.67 ccc 2500 1000
123 2017-11-16 2018-05-02 1000 10.67 ddd 0 1000
123 2018-05-03 2018-07-28 1000 10.83 eee 0 1000
123 2018-07-29 2018-12-31 1000 10.72 fff 0 1000
123 2019-01-01 (today) 1000 10.67 ggg 0 1000
Я не показал результаты инв # 456. Но желаемое решение должно сгруппировать каждый из счетов в таблице счетов.
Таким образом, в действительности при расчете процентов учитываются платежи по каждому счету (перечислены в таблице платежей), а также изменяющиеся процентные ставки (перечислены в таблице InterestRate). Не менее важным является тот факт, что проценты на остаток средств по каждому счету (1000 для инв. № 123) должны рассчитываться до даты выполнения запроса.
Одна из проблем, с которой я также сталкиваюсь, заключается в том, как я могу записать вышеупомянутые результаты в таблицу. Будет ли это означать удаление и повторное создание таблицы каждый раз, когда вы запускаете запрос (поскольку каждый раз, когда дата меняет сумму процентов на остаток, будет происходить изменение). Таким образом, если только процент по балансу на счет-фактуру не может быть обновлен, это (должно?) Обязательно означает, что таблицу необходимо удалить и заново создать. В качестве альтернативы, результаты должны просматриваться с помощью запроса просмотра.
Я надеюсь, что смог сформулировать свою проблему удовлетворительно.
Большое спасибо за то, что уделили мне время и внимание