如何使用WHERE
子句过滤OVER
子句?
即从以下数据
LoanID | Principal | Tenor | AmortizingPrincipal
----------------------------------------
1 20000 1 5000
1 20000 2 5000
1 20000 3 5000
1 20000 4 5000
我需要在每个 Tenor 中使用 Balance Principal 的第四个虚拟列,如下所示:
LoanID | Principal | Tenor | AmortizingPrincipal | BalancePrinicpal
-----------------------------------------------------------
1 20000 1 5000 20000
1 20000 2 5000 15000
1 20000 3 5000 10000
1 20000 4 5000 5000
像这样的东西:
SELECT
BalancePrincipal = Principal - SUM(AmortizingPrincipal) OVER(PARTITION BY LoanID WHERE Tenor < this row's tenor)
更新:
以下查询给了我想要的结果:
选择 L1.* ,BalancePrincipal = AL1.Principal - ISNULL(Cumulative.AmortizingSum,0) 从 贷款 L1 交叉申请 ( 选择 AmortizingSum = SUM(AmortizingPrincipal) 从 贷款 L2 在哪里 L1.LoanID = L2.LoanID 和 L1. 男高音 > L2. 男高音 ) 累积
可以改善吗?