使用关联表做区间关联

 

1

Excel文件book1.xlsx中,部分数据如下所示:

..

另一个文件book2.xlsx中有数量区间与价格的对应关系表,如下图所示:

..

现在要计算book1.xlsxB列的价格值,计算规则是用数量Quantitybook2.xlsx中查找,若数量大于Quantity1且小于等于Quantity2,则返回此行的价格。

编写SPL脚本:


A

1

=T("e:/work/book1.xlsx")

2

=T("e:/work/book2.xlsx")

3

=A1.run(Price=A2.segp@r(Quantity1,A1.Quantity).Price)

4

=T("e:/work/book1.xlsx",A1)

A1   读出book1.xlsx数据

A2   读出book2.xlsx数据

A3   循环A1每条记录,用segp函数查询Quantity的值位于A2Quantity1构成的区间的哪个段号,再从A2中取出对应号的记录的价格赋给Price。选项@r表示形成左开右闭的区间,比如数量50应该算成是第1行所在的区间。

A4   A1中的结果保存到文件book1.xlsx

 

2

Excel文件book1.xlsx中有汽车充电数据,部分数据如下所示:

..

另一个文件book2.xlsx中有充电时段对应的电价,如下图所示:

..

现在要计算book1.xlsxPrice列的价格,计算规则是用充电开始时间Starttime的小时数在book2.xlsx中查找所处时段的价格。

编写SPL脚本:


A

1

=T("e:/work/book1.xlsx")

2

=file("e:/work/book2.xlsx").xlsimport@w()

3

=A1.run(Price=A2(3).to(2,)(A2(1).to(2,).pseg(hour(A1.Starttime))))

4

=T("e:/work/book1.xlsx",A1)

A1   读出book1.xlsx数据

A2   读出book2.xlsx数据,选项@w表示读成序列的序列

A3   循环A1每条记录,用A2中第1行第2列开始的Starthour序列形成区间,在此区间查找A1.Starttime中的小时所处的分段号,从A23行的Price中取出对应分段号的价格赋给Price

A4   A1中的结果保存到文件book1.xlsx