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想要显示的内容以及您的查询结果查询给出。?我们不知道答案,因为我们不知道列类型或实际数据是什么。那么您在没有适当数据和要求的情况下发布了您的答案-: