在查询中每周付款后计算每月剩余余额

时间:2019-05-22 12:36:42

标签: sql sas proc-sql

我正在寻找一种方法来计算每周还款后每月的贷款剩余余额,全部都在一个类似SELECT的查询中

SELECT
    CASE
        WHEN frequency = 'Monthly' THEN balance * (1+ 1/12/100 * rate) - freq_based_payment
        WHEN frequency = 'Biweekly' THEN...
        WHEN frequency = 'Weekly' THEN...
    END AS expected_balance
...
FROM table

例如,我可以执行类似的代码,但是我正在寻找一种更好,更清洁的方法,因为在“每周”中,这会变得可笑。

SELECT
    CASE
        WHEN frequency = 'Monthly' THEN balance * (1+ 1/12/100 * rate) - freq_based_payment
        WHEN frequency = 'Biweekly' THEN
            (balance * (1+ 1/26/100 * rate) - freq_based_payment) * 
            (1+ 1/26/100 * rate) - freq_based_payment
        WHEN frequency = 'Weekly' THEN...
    END AS expected_balance
...
FROM table

我是SAS和proc sql的新手,到目前为止,我已经找到了MORT(),但是它没有用。

1 个答案:

答案 0 :(得分:0)

@wimz,根据注释,您是重构代码还是重写代码?

从会计角度来看,使用26.071 ...(或任何其他分数)之类的值是有缺陷的-会计计算通常比初次出现要困难得多,除非您已获得明确许可使用财务近似值计算(实际上是闻所未闻的!)。

如果您每两周支付$ 20且期初余额为$ 500,则下个月到期的余额取决于每两周周期的开始日期,月份的长度以及其他各种因素。

例如,考虑2月-您可以在1月15日和15日进行付款,下一次付款将在2月29日或3月1日进行。仅leap年2月可以包含3笔付款,并且仅当其中一笔付款位于第一笔付款时。其他所有月份可以包含2到3笔付款,而且没有简单的周期。

如果仅简单地划分费率而不参考每周周期的开始日期,那么如何计算特定月份的准确余额?