横向扩展出多列

 

举例

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进行分组,当Level2时就分一个新组。选项@i表示条件满足时就分一个新组

A5   循环A4的每一组,用第2条到最后一条记录按Material分组统计各材料占比之和命名为value列,再循环统计出的每一组,令A4当前组的第1条记录的Material字段的值为value

A6   A3中的结果保存到文件book2.xlsx