【发布时间】:2019-06-11 15:42:50
【问题描述】:
我正在努力使用 SQL 获得未来的现金流。它包括未结余额、标准付款、利息和本金。目前我在 excel 中有报告,但我需要在 Teradata 中得到完全相同的东西。
我想把我的问题分成两部分:
从表格中获取当前余额和利率(很简单)
生成未来 20 天的未来日期和项目(不确定如何执行此操作)
到目前为止,我已经尝试过 Windows 功能,但无法做到。
SELECT
"Account Number"
,"Business Date"
,"Outstanding Balance"
,"Standard Payment"
,"Current Balance" - "Standard Payment" "Dummy Balance"
,MAX("Dummy Balance" ) OVER (PARTITION BY "Account Number" ORDER BY "Business Date" ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING )"Prev Balance"
FROM table
where [<Conditions>]
GROUP BY 1,2,3,4
ORDER BY "NEXT DAYS";
如图所示,期末余额返回到期初余额字段,并根据这个新的期初余额值计算利息和本金。
例如,第一行的期初余额为100,以100为基础计算利息和本金,然后从期初余额中减去,得到期末余额99.70200384。在下一行中,这成为期初余额,所有其他值都基于此计算。
这可以在 SQL 中实现吗?
【问题讨论】:
-
那么从第二行开始,您希望起始余额为前一行的期末余额?
-
是的,没错。
-
在窗口函数中使用 LAG 或 LEAD 而不是 MAX
-
@JoakimDanielson,
ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING完成与滞后相同的事情。 -
几天以来我一直被这个问题困扰。你能给我一些关于如何解决这个问题的想法吗?谢谢:)