将上一年的值乘以下一年的值

时间:2017-05-10 14:00:34

标签: sql sql-server

我想将先前年份的价值乘以下一年的价值。

这是我表的数据

Drop table #Index
Create table #Index
(
  ID int ,
 YearOfMortgrage Smallint,
 Percentage Numeric (10,5)

)

Insert into #Index values ( 1 , 2008    ,1.01000    )
Insert into #Index values ( 2 , 2009    ,1.00125    )
Insert into #Index values ( 3 , 2010    ,1.00200    )
Insert into #Index values ( 4 , 2011    ,1.00850    )
Insert into #Index values ( 5 , 2012    ,1.01400    )
Insert into #Index values ( 6 , 2013    ,1.00900    )
Insert into #Index values ( 7 , 2014    ,1.00450    )
Insert into #Index values ( 8,  2015    ,1.00900    )
Insert into #Index values ( 9 , 2016    ,1.00600    )
Insert into #Index values ( 1,  2017    ,1.00700    )

我希望将2008年的百分比乘以2009年的百分比,依此类推。 像这样1.01000 * 1.00125 * 1.00200 * 1.00850等。

我尝试过滞后和领导,似乎没有用。我可以使用无限制的函数,但它只能用于聚合。

感谢你的时间,感谢任何帮助

1 个答案:

答案 0 :(得分:4)

你想要一个累积总和。假设值都大于0,您可以使用一些算术:

select i.*,
       exp(sum(log(Percentage)) over (order by YearOfMortgrage)) as running_product
from #Index i;