首页 > 解决方案 > 将值乘以先前计算的值

问题描述

我正在研究一个预测模型,并且在 sql 中随着时间的推移自动化趋势。我要做的是将每一行乘以先前导出的数字,然后将下一行乘以计算出的前一行。这是一个基本的可视化;

date          num_reqs  cumulative_value   cumulative value formula                                           
2019-10-01  246.4   276                  num_reqs * 1.12     
2019-10-02  246.4   309        previous cum_value * 1.12
2019-10-03  246.4   346        previous cum_value * 1.12
2019-10-04  246.4   388        previous cum_value * 1.12
2019-10-05  246.4   435        previous cum_value * 1.12

我尝试了 lag() 的一些变体,但我认为 lag 不允许累积。我也尝试过 exp() 但它不适用于我的价值观。

标签: sqlsql-server

解决方案


您可以使用求幂来执行此操作。我想你想要:

select t.*,
       numreqs * power(1.12, row_number() over (order by date)) as cumulative_value
from t

推荐阅读