【问题标题】:oracle lag over dynamic columnoracle 滞后于动态列
【发布时间】:2016-05-10 10:34:19
【问题描述】:

在 oracle SQL 中,我想将当前记录列 (col1) 与上一条记录中的 col2 相加。

类似这样的:

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

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

现在如何生成想要的结果?

【问题讨论】:

  • 你能告诉我们生成计算列的查询吗?
  • SQL 表是无序的。您如何定义“以前的记录”?

标签: sql oracle lag dynamic-columns


【解决方案1】:

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

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

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

【讨论】:

  • 不工作,我收到错误:ORA-00938:函数参数不足
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 1970-01-01
相关资源
最近更新 更多