数据区间重叠处理

【问题】

如:
   xh    num1          num2
   1     10015        60080
   2     20022        80090
   3     30250        40900
判断数据重叠区间后最后形成一条记录为:1    10015   80090
   xh    num1          num2
   1     10015        30080
   2     20022        50090
   3     60250        90900
处理后为:
   xh    num1          num2
   1     10015        50090
   2     60250        90900

【回答】

原理是判断是否可以和上一行合并成同一个区间,如果不可以则处理成另一个分组,可以则处理成同一个分组,最后在每组算最小最大端点即可。但SQL本身没有序运算,写成嵌套的方式,也很费劲。用SPL会简单一些,具体脚本如下:


A

B

1

$select num1,num2 from tb order by num1

2

=A1.group@i(num1>num2[-1])

3

=A2.new(#:xh,~.min(num1):num1,~.max(num2):num2)

A1:用sql取数,并按照num1排好序

A2:按数据区间有重叠的分为一组

A3 对分好的组创建新序表,分别取每一组的最小值和最大值为num1num2的字段值

计算结果:

undefined