Sql 需要计算行之间的和

Sql 需要计算行之间的和,sql,sql-server,sql-server-2008,sql-server-2012,Sql,Sql Server,Sql Server 2008,Sql Server 2012,我需要以下逻辑的帮助,我已经尝试了我的目的,但无法解决这个问题。 我的输入表如下: Months Amount Dec-15 720030 Jan-16 763236 Feb-16 795555 Mar-16 829252 Apr-16 856052 我需要如下计算值,它将是动态的,因为月份将根据当前日期增加。输出: +---------------------------------------------------------+ | M

我需要以下逻辑的帮助,我已经尝试了我的目的,但无法解决这个问题。 我的输入表如下:

Months  Amount
Dec-15      720030
Jan-16      763236
Feb-16      795555
Mar-16      829252
Apr-16      856052
我需要如下计算值,它将是动态的,因为月份将根据当前日期增加。输出:

+---------------------------------------------------------+
| Months      Amount      Formula         Expected Amount |
+---------------------------------------------------------+
| 15-Dec      720030      Dec-15          720030          |
| 16-Jan      763236      Dec-15+Jan-16   1483266         |
| 16-Feb      795555      Jan-16+Feb-16   1558791         |
| 16-Mar      829252      Feb-16+Mar-16   1624807         |
| 16-Apr      856052      Mar-16+Apr-16   1685304         |
+---------------------------------------------------------+
使用滞后:

使用滞后:


我首先创建了一个临时表,它有额外的列“ID”。ID是使用ROW_NUMBER函数创建的。然后,使用while循环遍历表并将amount的前一个值添加到当前amount中

代码如下

select month, amount, ROW_NUMBER() over(order by month) ID 
into New_Table from Your_Table

declare @a int
set @a = 1;
    while @a <= (select max(ID) from New_Table)
        begin
            IF @a = 1
            select month, amount, amount Expected_Amount from New_Table where ID = @a;
            ELSE
            select month, amount, amount + (select amount from New_Table where ID = (@a-1)) Expected_Amount from New_Table where ID = @a;
set @a = @a + 1;
end;

我首先创建了一个临时表,它有额外的列“ID”。ID是使用ROW_NUMBER函数创建的。然后,使用while循环遍历表并将amount的前一个值添加到当前amount中

代码如下

select month, amount, ROW_NUMBER() over(order by month) ID 
into New_Table from Your_Table

declare @a int
set @a = 1;
    while @a <= (select max(ID) from New_Table)
        begin
            IF @a = 1
            select month, amount, amount Expected_Amount from New_Table where ID = @a;
            ELSE
            select month, amount, amount + (select amount from New_Table where ID = (@a-1)) Expected_Amount from New_Table where ID = @a;
set @a = @a + 1;
end;

您期望的输出是什么?请提及期望的输出哪个版本的SQL Server?从2012年起,您可以使用超前或滞后函数。月份列的类型是什么?您计划如何对数据进行排序?如果是varchar字段,您的月份列将不会删除它。您需要的输出是什么。?请提及需要的输出哪个版本的SQL Server?从2012年起,您可以使用超前或滞后函数。月份列的类型是什么?您计划如何对数据进行排序?你的月专栏不会把它删掉,如果是varchar字段。您是否观察到@Nitin.Gawade想要显示的内容以及您的查询结果?我们不知道答案,因为我们不知道列类型或实际数据是什么。然后,您在没有适当数据和要求的情况下发布了您的答案-:您是否观察到@Nitin.Gawade想要显示的内容以及您的查询结果查询给出。?我们不知道答案,因为我们不知道列类型或实际数据是什么。那么您在没有适当数据和要求的情况下发布了您的答案-: