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 函数行转列,这里省略了目标字段。
