sql通过操作上一行和上一列来生成列

时间:2014-08-18 04:47:05

标签: sql oracle11g

我在表格中有以下内容

  c1   
  1  
  4  
  3  
  2  
  2  

我需要生成c2:

 
  c1 c2  
  1  1
  4  5
  3  8
  2  10
  2  12

c2的第一行是c1行值。现在需要为c2的第二行添加c1的第二行和c2的第一行。对于c2的第三行,C2 = c1的第三行+ c2的第二行,依此类推......

我需要在sql中使用它。有可能吗?

我使用oracle 11g。

1 个答案:

答案 0 :(得分:1)

您的算法只是简化了运行总计:

create table c2 as
select c1
, sum(c1) over (ORDER BY rowid) as c2
from c1;

订单是一个问题 - 我们无法ORDER BY NULL。鉴于您的示例不按rowid排序,我使用了c1。但是如果你正在进行总计,你必须决定它的运行方式!