AMORTIZATION DATE DISCOUNT AMORTIZATION MATURITY DATE
02/09/2023 511824313.83 12/28/2025
03/07/2023 -9001548.39 12/28/2025
03/31/2023 -14080392.04 12/28/2025
04/28/2023 -13775775.36 12/28/2025
05/31/2023 -14391250.04 12/28/2025
06/30/2023 -14079908.22 12/28/2025
07/31/2023 -14708970.96 12/28/2025
08/31/2023 -14873114.19 12/28/2025
09/29/2023 -14551347.67 12/28/2025
10/31/2023 -15201473.40 12/28/2025
11/30/2023 -14872603.13 12/28/2025
12/31/2023 -15537081.92 12/28/2025
01/31/2024 -15710466.37 12/28/2025
02/29/2024 -14855567.70 12/28/2025
03/29/2024 -16051564.84 12/28/2025
04/30/2024 -15704303.60 12/28/2025
05/31/2024 -16405941.14 12/28/2025
06/28/2024 -16051013.29 12/28/2025
07/31/2024 -16768141.14 12/28/2025
08/30/2024 -16955263.46 12/28/2025
09/30/2024 -16588451.51 12/28/2025
10/31/2024 -17329591.05 12/28/2025
11/29/2024 -16954680.86 12/28/2025
12/31/2024 -17712182.81 12/28/2025
01/31/2025 -17909840.06 12/28/2025
02/28/2025 -16348354.59 12/28/2025
没有人知道系统如何进行摊销,以及如何在SQL中复制它?
oracle-您应该将其调整为rdbms ...摊销是每年计算的。您应该创建一种数天数的年度日历:
...样本数据
tbl AS
( Select DATE '2023-02-09' "AMORTIZATION_DATE",
1826971500.00 "PAR_VALUE",
511824313.83 "DISCOUNT",
1826971500.00 - 511824313.83 "DISCOUNTED_VALUE",
0.0972 "DISCOUNT_RATE",
0.135028 "INTEREST_RATE",
DATE '2025-12-28' "MATURITY_DATE"
From Dual
),
...准备计算数据 - 获取yr_ratio与Discount_rate一起使用
grid AS
( Select c.ID, t.PAR_VALUE,
Case When Extract(Year From t.AMORTIZATION_DATE) = Extract(Year From c.YR_END)
Then t.AMORTIZATION_DATE
Else ADD_MONTHS(c.YR_END, -12) + 1 End "START_DATE",
Case When Extract(Year From t.MATURITY_DATE) = Extract(Year From c.YR_END)
Then t.MATURITY_DATE
Else c.YR_END End "END_DATE",
--
( Case When Extract(Year From t.MATURITY_DATE) = Extract(Year From c.YR_END)
Then t.MATURITY_DATE
Else c.YR_END End
-
Case When Extract(Year From t.AMORTIZATION_DATE) = Extract(Year From c.YR_END)
Then t.AMORTIZATION_DATE
Else ADD_MONTHS(c.YR_END, -12) End
) / c.DAYS "YR_RATIO",
t.DISCOUNT_RATE
From cal c
Inner Join tbl t ON( t.AMORTIZATION_DATE <= c.YR_END )
)
...现在您可以进行计算
-- M a i n S Q L
Select ID, START_DATE, END_DATE, PAR_VALUE, Round(YR_RATIO, 6) "YR_RATIO", DISCOUNT_RATE,
Round(PAR_VALUE * YR_RATIO * DISCOUNT_RATE, 2) "DISCOUNT"
From grid
Id