【发布时间】:2022-01-24 01:10:11
【问题描述】:
我正在尝试根据年度销售增长预期来计算年度预期销量。 在一张表中,我有实际销量:
create table #Sales (
ProductId int,
Year int,
GrowthRate float
)
insert into #Sales
values
(1, 2021, 1000),
(2, 2021, 5000)
在另一个表格中,我有年增长率:
create table #GrowthRates (
ProductId int,
Year int,
GrowthRate float
)
insert into #GrowthRates
values
(1, 2022, 0.02),
(1, 2023, 0.04),
(1, 2024, 0.03),
(1, 2025, 0.05),
(2, 2022, 0.10),
(2, 2023, 0.12),
(2, 2024, 0.05),
(2, 2025, 0.09)
有没有办法计算Sales2022 = Sales2021 * (1+GrowthRate2022),然后计算另一行Sales 2023 = Sales2022(from previously) * (1+GrowthRate2023),依此类推,直到2025年全部在select语句中完成。也许是一个循环或什么?我试图避免必须为每年创建一个中间临时表。
最终输出应该是这样的table。如果有帮助,我可以将年份转为列。
【问题讨论】:
-
请避免发布images 的数据,我们无法处理图片,示例数据在您的问题中应该是consumable text,最好是create和 insert 语句,或者DB<>Fiddle
-
@Stu 感谢您的指导。现在已经更正了。
-
您可能会使用对数和 Growthrates 表(按产品分区,按年 ASC 排序)上的窗口函数来创建运行乘积的技巧来获得累积增长率,加入回到原来的桌子。把这一切做好会有点棘手。
-
请向我们展示您目前的尝试。
标签: sql sql-server loops