【问题】
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])) |
A1:sql取数,并按照name,id排序
A2:相同name下,当前行的cha值为nl-nl加前一行的cha
写好的脚本如何在应用程序中调用,可以参考Java 如何调用 SPL 脚本