使用关联表做区间关联

本文通过两个示例介绍了如何使用SPL脚本进行区间关联查询。例1中,根据book1.xlsx中的数量查询book2.xlsx中的价格区间,利用segp函数确定区间段号并获取价格。例2中,通过比较book1.xlsx中的充电开始时间与book2.xlsx中的时段,找出对应的价格。最终将计算结果保存回原始文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例1

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

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

现在要计算book1.xlsx中B列的价格值,计算规则是用数量Quantity在book2.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的值位于A2的Quantity1构成的区间的哪个段号,再从A2中取出对应号的记录的价格赋给Price。选项@r表示形成左开右闭的区间,比如数量50应该算成是第1行所在的区间。

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

例2

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

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

现在要计算book1.xlsx中Price列的价格,计算规则是用充电开始时间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中的小时所处的分段号,从A2第3行的Price中取出对应分段号的价格赋给Price。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值