使用区间范围倒查关联表

举例

有 Excel 文件 Book1.xlsx,数据如下所示:

id start end val
1001 1 54
1001 55 100
1001 101 149
1001 150 200
1002 1 10
1002 11 24
1003 1 2
1003 3 6
1003 7 8
1003 9 21
1003 22 30

有 Excel 文件 Book2.xlsx,数据如下所示:

id num val
1001 5 2
1001 77 5
1002 9 1
1003 11 4

现在要计算 Book1.xlsx 中的 val 列,要求是:

1.Book2的 id 列跟 Book1 的 id 列相等。

2.满足条件 1 的情况下,判断 Book2 的 num 是否属于 Book1 的 start 至 end 区间值

3.上面两者同时满足则 Book1 的 val 为 Book2 对应的 val,结果如下:

id start end val
1001 1 54 2
1001 55 100 5
1001 101 149
1001 150 200
1002 1 10 1
1002 11 24
1003 1 2
1003 3 6
1003 7 8
1003 9 21 4
1003 22 30

编写 SPL 脚本:


A
1 =file("Book1.xlsx").xlsimport@t()
2 =file("Book2.xlsx").xlsimport@t()
3 =A1.run(val=A2.select@1(id==A1.id && num>=A1.start   && num <=A1.end).val)
4 =file("result.xlsx").xlsexport@t(A1)

A1   读取 excel 文件内容

A2   读取 excel 文件内容

A3  判断每条 Book1 的数据是否满足要求,若满足则将 Book2 的 val 给 Book1

A4  结果导出至 result.xlsx