计算应付余额利息

时间:2019-04-28 11:00:26

标签: sql-server-2017

我有3个表Invoice,Payments和InterestRate。为简单起见,我将每个表表示如下。

“发票”表具有以下列(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   |
    +--------------+------------+----------+

我的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

我没有显示Inv#456的结果。但是所需的解决方案需要将发票表中的每个发票分组。

因此,实际上,利息计算考虑了针对每张发票的付款(在“付款”表中列出)以及不断变化的利率(在“利息率”表中列出)。同样重要的是,需要计算每张发票上的应付余额的利息(inv#123为1000),直到运行查询之日为止。

我还面临的挑战之一是如何在表格中捕获上述结果。这是否意味着每次您运行查询都将删除并重新创建表(因为每次日期更改时,应付余额中的利息金额都会发生变化)。因此,除非只能更新每张发票余额上的利息,否则(应该?)必然意味着必须删除该表并重新创建该表。或者,必须通过视图查询来查看结果。

我希望我能够令人满意地阐明我的问题。

非常感谢您的时间和精力帮助我。

0 个答案:

没有答案