我有一个临时表用于测试并需要一些分析功能的方向。仍然试图找出我真正的解决方案..任何帮助引导我正确的方向将不胜感激。
A1 B1
40 5
50 4
60 3
70 2
90 1
Tyring找到前一个值并减去并添加列
SELECT A1, B1,
(A1-B1) AS C1,
(A1-B1) + LEAD((A1-B1),1,0) OVER (ORDER BY ROWNUM) AS G1
FROM TEST;
输出不是我期望的
A1 B1 C1
40 5 35
50 4 46
60 3 57
70 2 68
90 1 89
从最后一行(第5行)开始,首先减去A1-B2得到C1 ......然后(C1 +前A1) - 前一行B1是---> 89 + 70 - 2 = 157
(将结果保存在C1上一行)
第4行:157+60 -3 = 214
重复直到第一行...
预期的最终输出应该是: -
A1 B1 C1
40 5 295
50 4 260
60 3 214
70 2 157
90 1 89
答案 0 :(得分:0)
LAG
和LEAD
只获得单行的值,而不是多行的聚合,并且不会递归应用。
你想:
SELECT A1,
B1,
SUM( A1 - B1 ) OVER ( ORDER BY ROWNUM
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
) AS C1
FROM test;