8.4 动态行转列
动态行转列,是指转置时生成的字段不能事先指定,只能根据原字段的取值动态确定。
员工表如下:
Name | Dept | Area | Salary |
---|---|---|---|
David | Sales | Beijing | 8000 |
Daniel | R&D | Beijing | 15000 |
Andrew | Sales | Shanghai | 9000 |
Robert | Sales | Beijing | 26000 |
Rudy | R&D | Shanghai | 23000 |
… | … | … | … |
统计各部门在不同地区的平均工资,现在不知道有哪些地区,想要转换成如下结果:
Dept | Beijing | Shanghai | … |
---|---|---|---|
Sales | 13000 | 11000 | … |
R&D | 15000 | 14000 | … |
这个例子是行转列,目标字段需要从数据中提取。pivot 函数支持这种动态转置,不指定目标字段时,它会自动提取目标字段的名称。
脚本:
A | |
---|---|
1 | =connect(“db”) |
2 | =A1.query@x(“select Dept,Area,avg(Salary) as AvgSalary from Employee group by Dept,Area”) |
3 | =A2.pivot(Dept; Area, AvgSalary) |
A1 连接数据源。
A2 从员工表中取出按部门、地区分组的平均工资。
A3 使用 pivot 函数行转列,这里省略了目标字段。