【发布时间】:2021-09-09 15:19:01
【问题描述】:
我在 Oracle 中有下表:
| F1 | F2 | YEAR | AMT |
|---|---|---|---|
| DC1 | 123 | 2021 | 1000 |
| DC1 | 123 | 2022 | 1100 |
| DC1 | 123 | 2023 | |
| DC1 | 123 | 2024 | |
| DC2 | 456 | 2021 | 5000 |
| DC2 | 456 | 2022 | 6000 |
| DC2 | 456 | 2023 | |
| DC2 | 456 | 2024 |
我想根据最后一个可用日期 (YEAR 2022) 的 AMT 计算每个 F1 和 F2 分组的缺失年份 (YEAR 2023 和 2024) 并乘以 AMT每年复利 2.1%。
我用过LAST_VALUE函数
`(LAST VALUE(AMT IGNORE NULLS) OVER (PARTITION BY F1, F2 ORDER BY F1 F2 YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS NEXT_AMT`
获取每个分组的最后一个值(1100 和 6000),但是当我乘以 2.1% 时,我没有得到复利效应。
期望的输出:
| F1 | F2 | YEAR | AMT | NEXT_AMT | NEW_AMT |
|---|---|---|---|---|---|
| DC1 | 123 | 2021 | 1000 | 1000 | |
| DC1 | 123 | 2022 | 1100 | 1100 | |
| DC1 | 123 | 2023 | 1100 | 1123.1 | |
| DC1 | 123 | 2024 | 1100 | 1146.68 | |
| DC2 | 456 | 2021 | 5000 | 5000 | |
| DC2 | 456 | 2022 | 6000 | 6000 | |
| DC2 | 456 | 2023 | 6000 | 6126 | |
| DC2 | 456 | 2024 | 6000 | 6254.65 |
【问题讨论】: