Sql 如何在下一列中添加列值

Sql 如何在下一列中添加列值,sql,db2,Sql,Db2,所需输出 表名数据 id value 1 10 2 20 3 30 4 40 5 50 请提供sql查询您正在寻找的是标准sql,如果我没有弄错的话,它应该在以后的DB2版本中可用 id value 1 10 //( 10+0(previous value)) 2 30 //( 20+10(previous value)) 3

所需输出

表名数据

id        value
1          10
2          20
3          30
4          40
5          50
请提供sql查询

您正在寻找的是标准sql,如果我没有弄错的话,它应该在以后的DB2版本中可用

 id       value 
1         10    //( 10+0(previous value))
2         30   //( 20+10(previous value))
3         50   //( 30+20(previous value))
4         70   //( 40+30(previous value))
5         90    //(50+40(previous value))
如果无法获得滞后,则累积可为:

解决方案1:

select
  id, 
  coalesce( sum(value) over (order by id rows between 1 preceding and current row), 0 )
    as value
from mytable
order by id;
解决方案2:

select f1.id, 
ifnull((select f2.value from yourtable f2 where f1.id - 1 =f2.id), 0) + f1.value as value
from yourtable f1

您正在使用哪些RDBMS?mysql还是SQL Server?我删除了不兼容的数据库标记。请仅使用您真正使用的数据库进行标记。数据库名称-ibm db2persible duplicate of when execute query than the error comes select id,coalesce sumvalue over order by id rows from 1 previous and current row,0 as value from users.mohit order by id value在使用它的上下文中无效。。SQLCODE=-206,SQLSTATE=42703,DRIVER=4.18.60抱歉,我不明白这条消息怎么会出现。值仅用于两个位置:sumvalue(看起来正确)和as value(看起来也正确)。我不太了解DB2。它是否有问题,因为我们对别名和列使用相同的名称?我不知道。
select f1.id, 
ifnull((select f2.value from yourtable f2 where f1.id - 1 =f2.id), 0) + f1.value as value
from yourtable f1
select f1.id, 
ifnull(f3.value, 0) + f1.value as value
from yourtable f1
left outer join lateral
(
    select f2.value from yourtable f2 
    where f1.id - 1 =f2.id
) f3 on 1=1