我有一个包含两列的表:Cur_value 和 Difference
Cur_value Difference
(-3) 3
(-2) 4
(-1) 5
(1) 1
(2) -2
(3) 3
(4)
(5)
(6)
(7)
现在我想计算从第 (1) 行到第 (7) 行的 Char Value 的值,以便
cur_value(t) = cur_value(t-3) + diff(t)。
这意味着我的结果是:
Value Difference
(-3) 3
(-2) 4
(-1) 5
(1) 3 + 1 1
(2) 4 - 2 -2
(3) 5 + 3 3
(4) 3 + 1 + 2 2
(5) 4 - 2 + 1 1
(6) 5 + 3 - 2 -2
(7) 3 + 1 + 2 - 1 -1
。
我的问题是:如何通过单个 Oracle SQL 语句执行此操作?
请注意,数据库表没有任何内在顺序。假设您有一些 id 或其他列可用于定义行的顺序,您可以使用lag https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions070.htm获取 t-3 记录的函数:
SELECT cur_value,
difference,
LAG(cur_value, 3, 0) OVER (ORDER BY id) + difference AS new_cur_value
FROM my_table
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)