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.テノール ) 累積的な
改善できますか?