横向扩展出多列
举例
Excel文件book1.xlsx中有序存放着多种部件及其金属子部件,当Level=2时,表示该行为部件(汇总行),当Level=3时,表示该行为子部件。Material列和Proportion列分别存放子部件的金属名称和占比。如下所示:
现在要在部件(汇总行)的右侧拼上每种金属的占比,如下所示:
编写SPL脚本:
A |
|
1 |
=T("e:/work/book1.xlsx") |
2 |
=A1.id(Material).select(~) |
3 |
=A1.derive(${A2.string()}) |
4 |
=A3.group@i(Level==2) |
5 |
=A4.run(~.to(2,).groups(Material;sum(Proportion):value).run(A4.~(1).field(Material,value))) |
6 |
=T("e:/work/book2.xlsx",A3) |
A1 读入book1.xlsx文件数据
A2 选出不重复且不为空的Material种类
A3 为A2中选出的每种Material各追加一列
A4 对A3进行分组,当Level为2时就分一个新组。选项@i表示条件满足时就分一个新组
A5 循环A4的每一组,用第2条到最后一条记录按Material分组统计各材料占比之和命名为value列,再循环统计出的每一组,令A4当前组的第1条记录的Material字段的值为value
A6 把A3中的结果保存到文件book2.xlsx中