首页 > 解决方案 > SQL Server:查询以显示包含基于先前记录的数据*因子的新列

问题描述

我正在尝试在 SQL Server 中制定一个查询,其中:

Date        |   Name  | Amount | AmountX
------------+---------+--------+-------
2010-01-01  |   Test  | 0      | 0
2010-02-01  |   Test  | 0      | 0
2010-03-01  |   Test  | 0      | 0
2011-01-01  |   Test  | 62.61  | 63.86
2011-02-01  |   Test  | 62.61  | 63.86
2011-03-01  |   Test  | 62.61  | 63.86
2012-01-01  |   Test  | 62.61  | 65.14
2012-02-01  |   Test  | 62.61  | 65.14
2012-03-01  |   Test  | 62.61  | 65.14
2013-01-01  |   Test  | 62.61  | 66.44
2013-02-01  |   Test  | 62.61  | 66.44
2013-03-01  |   Test  | 62.61  | 66.44
2014-01-01  |   Test  | 62.61  | 67.77
2014-02-01  |   Test  | 62.61  | 67.77
2014-03-01  |   Test  | 62.61  | 67.77
2015-01-01  |   Test  | 0      | 0
2015-02-01  |   Test  | 0      | 0
2015-03-01  |   Test  | 0      | 0
2016-01-01  |   Test  | 67.95  | 69.31
2016-02-01  |   Test  | 67.95  | 69.31
2016-03-01  |   Test  | 67.95  | 69.31
2017-01-01  |   Test  | 67.95  | 70.70
2017-02-01  |   Test  | 67.95  | 70.70
2017-03-01  |   Test  | 67.95  | 70.70
2018-01-01  |   Test  | 67.95  | 72.11
2018-02-01  |   Test  | 67.95  | 72.11
2018-03-01  |   Test  | 67.95  | 72.11
2019-01-01  |   Test  | 67.95  | 73.55
2019-02-01  |   Test  | 67.95  | 73.55
2019-03-01  |   Test  | 67.95  | 73.55

日期、名称和金额列来自该表。

我需要创建一个查询以包含基于日期分组的 AmountX 列。金额和 2% 的系数进行计算。

可以忽略 2010 年,因为金额值为 0。

对于 2011 年,金额值不是 0,即 62.61。我需要将它乘以 1.02,得到 63.86,全年,并将其显示在 AmountX 列中。

现在对于 2012 年,将计算上一年的 63.86 X 1.02 = 65.14。

因此,对于 2013 年,它将是 64.14 X 1.02 = 66.44。

而对于 2014 年,它将是 66.44 X 1.02 = 67.77。

这是可行的吗?

任何帮助是极大的赞赏。

回复..

标签: sql-serverdatabase

解决方案


我想你想要:

select t.*, 
       (amount * power(1.02, year(date) - 2010)) as amountX
from t;

推荐阅读