如何从 SQL 查询中的前一行引用计算值?在我的情况下,每一行都是一个事件,它以某种方式操纵前一行的相同值。
原始数据如下所示:
Eventno 事件类型 Totalcharge 3 ACQ 32 2 出空 1 出空
假设每个 Eventtype=OUT 应该是名为 Remaincharge 的列中前一行总电荷的一半:
Eventno Eventtype Totalcharge Remaincharge 3 ACQ 32 32 2 出空 16 1 出空 8
我已经尝试过 LAG 分析函数,但这不允许我从前一行获得计算值。尝试过这样的事情:
LAG(remaincharge, 1, totalcharge) OVER (PARTITION BY ...) as remaincharge
但这不起作用,因为找不到剩余电荷。
任何想法如何实现这一目标?需要一个分析函数,它可以给我累积总和,但给定一个函数,而不是访问以前的值。
先感谢您!
更新问题描述
恐怕我的示例问题很笼统,这里有一个更好的问题描述:
剩余的总费用由outqty /(previous剩余数量)的比率决定。
Eventno Eventtype Totalcharge Remainqty Outqty 4 ACQ 32 100 0 3 其他 NULL 100 0 2 出空 60 40 1 输出空 0 60
Eventno Eventtype Totalcharge Remainqty Outqty Remaincharge 4 ACQ 32 100 0 32 3 其他 NULL 100 0 32 - (0/100 * 32) = 32 2 OUT NULL 60 40 32 - (40/100 * 32) = 12.8 1 OUT NULL 0 60 12.8 - (60/60 * 12.8) = 0