【问题】
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 脚本
该问题涉及动态计算表格中某一列的差值,特别是当同一名称的数据出现时,需要累加差值。通过SPL脚本,可以灵活地处理这种场景,无论数据列的数量如何变化。SPL脚本首先按name和id排序,然后对相同name的行进行处理,计算nl和nl1的差值,并累加上前一行的cha值。
686

被折叠的 条评论
为什么被折叠?



