分组后离散记录引用

【问题】

有一张表,表结构、数据如下
ID       Title      Number
1          A        200
2          A        300
3          B        400
4          C        500
想要的结果
1          A      500
2          A      300
3          B      800
4          C      800
也就是按Title字段分组后的的Number都为800,如果Ttile存在相同的则改变小的值,使相同的两项和为800
如结果:两项A和为800 ID1Number=200)的基础上加上300B800C800sql语句如何实现,求教,不胜感激!

【回答】

       SQL的集合无序,需要先用子查询造个序号才能实现跨行有序计算,有了窗口函数后的实现已经简化了许多(没有则会更难写得多得多),但脚本仍然比较难懂。

       如果是JAVA的主程序,SPL脚本要直观易懂且不受数据库对窗口函数的支持限制,脚本如下:


A

1

$SELECT ID,Title,Number FROM TB ORDER BY   Title,Number

2

>A1.group(Title).run(~(1).Number=(800-~.sum(Number)+~(1).Number))


A1sql取数,按照 Title,Number排序

A2:根据Title分组(集算器的分组会保留分组明细),然后再循环每个分组,修改组内第一个Number值。修改后,A1即为所得结果:

undefined

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