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 を含む 4 番目の仮想列が必要です。
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.テノール
) 累積的な
改善できますか?