【问题标题】:Calculating monthly remaining balance after weekly payments in a query在查询中计算每周付款后的每月余额
【发布时间】:2019-05-22 12:36:42
【问题描述】:

我正在寻找一种方法来计算每周还款后的每月贷款余额,所有这些都在 SELECT query 中,看起来像

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(),但它没有用。

【问题讨论】:

  • 您所说的“每月余额......在每周付款后”到底是什么意思?另一个提示也是,一年没有 26 个双周,但我看到除以 26 - 如果你在做任何财务工作,需要考虑一下,因为总和通常很重要,如果“比率”是每年的数字,那么这些计算可能不会产生正确的结果。
  • 请更新一些示例数据和所需的输出。与此同时,您可能想看看sum() over
  • @Steve 是的,我放 26 只是为了简化,实际上我使用 26.07142855。我正在重构一些代码,每个月底,他们都有一个包含余额和预期余额的表,以便能够在 balance_of_next_month != 预期余额的情况下计算预付款。这有点惨败,但我无法改变结构。
  • @JohnHC 如果我有 500 美元的余额和 20 美元的双周付款,我希望在 expected_balance_for_next_month 有 465,67 美元。实际的代码计算不正确,给出了 465,65$...而且数字越大,差异越大。
  • @wimz 编辑您的问题,提供示例数据和预期输出。这将是表格形式。

标签: sql sas proc-sql


【解决方案1】:

@wimz,来自 cmets,您是重构代码还是重新编写代码?

从会计的角度来看,使用像 26.071...(或任何其他分数)这样的值是有缺陷的 - 会计计算通常比最初看起来要困难得多,除非您已获得使用近似值进行财务的明确许可计算(几乎闻所未闻!)。

如果您有 20 美元的每两周付款和 500 美元的起始余额,则下个月到期的余额取决于每两周周期的开始日期、月份的长度以及各种其他因素。

以 2 月为例 - 您可以在 1 日和 15 日付款,下一次付款在 2 月 29 日或 3 月 1 日进行。只有闰二月可以包含 3 笔付款,并且仅当其中一笔付款落在 1 日时。所有其他月份可以包含 2 到 3 次付款,没有简单的周期。

那么,当仅采用简单的比率除法且不参考每周周期的开始日期时,如何计算特定月份的准确余额?

【讨论】:

  • 我完全理解你的意思并同意。他们的计算绝对有缺陷,他们知道这一点,但他们不会对此采取任何行动。我是实习生,他们不在乎我的意见,即使他们知道自己错了。感谢您试图帮助大家,但我会放过那个。我将使用他们的代码,仅此而已。
  • @wimz,嗯,如果你是实习生,这将是关于当今大多数分析完成和编写的大多数软件的质量的一堂课!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多