oracle滞后于动态列

时间:2016-05-10 10:34:20

标签: sql oracle lag dynamic-columns

oracle SQL中的

我希望将当前记录列(col1)与前一记录中的col2相加。

类似的东西:

col1         col2
-----        ----
  10          300
  12          312
  20          332
  50          382

我可以对此查询使用滞后函数 WHEN col2是数据库列但是 col2用函数计算。否则col2是动态列。

现在如何产生预期的结果?

1 个答案:

答案 0 :(得分:1)

lag()应该可以使用函数调用。如果你愿意,你可以这样做:

with t(col1, col2) as (
      select . . .
     )
select (col1 + coalesce(lag(col2) over (order by col1), 0) as thesum
from t;

注意:这假设排序由col1指定,考虑到问题中的示例,这似乎是合理的。