sql 查询语句实现两列相减循环求差的算法

【问题】

id  name   nl    nl1     cha
1     a          5      0         5
2     a          4      2         7
3     a          1      8         0
1     b          2       0        2
2     b          2       1        3
现在要求出cha这一列的数值,也就是nl-nl1,但是第二列name等于a的这个差就是(5+4-2+0)以此类推,但是不知道name字段具体有几例,可以是三列也可以是两列或者5 等不确定的,这个需要怎么实现 大神求救啊

【回答】

这个问题的逻辑不算难,SQL集合无序实现就比较绕,如果是JAVA+SQL的环境,可以用SPL来实现,各种数据库都可用,具体的脚本写法如下:


A

1

$select * from tb order by name ,id

2

=A1.run(cha=nl-nl1+if(name==name[-1],cha[-1]))

A1sql取数,并按照nameid排序

A2:相同name下,当前行的cha值为nl-nl加前一行的cha

写好的脚本如何在应用程序中调用,可以参考Java 如何调用 SPL 脚本