功能:
行列转置。行转列:标题列的值变为新列名,取值列的值变为新列的值。列转行:用逆向参数,原列名变为标题列的值,原列值变为取值列的值。
语法:
旋转 [分组 {[<分组列>] [命名 <新列名>]}] [标题列 <列名>] [取值列 <列名>] [计算方法] [表头 <标题值集合>]
参数:分组
本参数是个复合参数,由参数分组列+命名 <新列名>组成,多组表示多个分组列。
参数:分组列
旋转时要固定不动的单个分组列。必填,省略参数名。
参数:命名 <新列名>
参数分组列旋转后改的新列名。可选,不可省略参数名。缺省保持原列名不变。注意,使用本参数时必须搭配参数分组列。
示例:
预算表数据如下:
|
Branch |
Dept |
State |
Amount |
|
branch1 |
Administration |
Florida |
28000 |
|
branch1 |
Finance |
California |
6000 |
|
branch2 |
Finance |
Florida |
20000 |
|
branch2 |
Finance |
New York |
11000 |
|
branch3 |
Finance |
Texas |
11000 |
|
branch2 |
HR |
Texas |
10000 |
|
branch1 |
Marketing |
California |
31000 |
|
branch1 |
Marketing |
New York |
12000 |
|
branch2 |
Marketing |
Pennsylvania |
10000 |
|
branch3 |
Marketing |
Texas |
4000 |
|
branch1 |
Production |
Florida |
15000 |
|
branch3 |
Production |
Pennsylvania |
10000 |
|
branch3 |
R&D |
Pennsylvania |
24000 |
|
branch2 |
R&D |
Texas |
32000 |
|
branch1 |
Sales |
California |
28000 |
|
branch1 |
Sales |
Florida |
4000 |
|
branch2 |
Sales |
New York |
15000 |
|
branch3 |
Sales |
Texas |
12000 |
旋转 分组 Branch 命名 分公司, Dept; 标题列 State; 取值列 Amount //保持Branch、Dept不变,将其他列/组内数据进行行转列,原State的值作为新列的标题,原Amount的值作为新列的值,Branch改名为分公司,结果如下:
|
分公司 |
Dept |
Florida |
California |
New York |
Texas |
Pennsylvania |
|
branch1 |
Administration |
28000 |
|
|
|
|
|
branch1 |
Finance |
|
6000 |
|
|
|
|
branch1 |
Marketing |
|
31000 |
12000 |
|
|
|
branch1 |
Production |
15000 |
|
|
|
|
|
branch1 |
Sales |
4000 |
28000 |
|
|
|
|
branch2 |
Finance |
20000 |
|
11000 |
|
|
|
branch2 |
HR |
|
|
|
10000 |
|
|
branch2 |
Marketing |
|
|
|
|
10000 |
|
branch2 |
R&D |
|
|
|
32000 |
|
|
branch2 |
Sales |
|
|
15000 |
|
|
|
branch3 |
Finance |
|
|
|
11000 |
|
|
branch3 |
Marketing |
|
|
|
4000 |
|
|
branch3 |
Production |
|
|
|
|
10000 |
|
branch3 |
R&D |
|
|
|
|
24000 |
|
branch3 |
Sales |
|
|
|
12000 |
|
参数:标题列 <列名>
旋转后,原表中指定单列的值将作为旋转后新列的标题。比如上例脚本中的:标题列 State 。
必填,不可省略参数名。
参数:取值列 <列名>
旋转后,原表中指定单列的值将作为旋转后新列的值。比如上例脚本中的:取值列 Amount 。
必填,不可省略参数名。
参数:计算方法
旋转时的计算方法。
可选,省略参数名;枚举类型,枚举值:合计、计数、平均、最大、最小、逆向。缺省取第一条记录。
其中合计、计数、平均、最大、最小是聚合算法,即行转列旋转后,标题列的一行对应取值列的多个值时,可以通过聚合算出单一值。这种情况一般是因为分组列、标题列、取值列之外还有原表没用到的列。
示例:
旋转 分组 Branch; 标题列 State; 取值列 Amount; 最大 //焦点表为预算表,按Branch分组,将组内记录行转列,State是标题列,Amount是取值列,对Amount取最大值,结果如下:
|
Branch |
Florida |
California |
New York |
Texas |
Pennsylvania |
|
branch1 |
28000 |
31000 |
12000 |
|
|
|
branch2 |
20000 |
|
15000 |
32000 |
10000 |
|
branch3 |
|
|
|
12000 |
24000 |
解释:因为没用到Dept列,所以旋转后每个取值列对应多个Dept的值,可以通过聚合计算成一个值。
旋转 分组 Branch; 标题列 State; 取值列 Amount //焦点表为预算表,按Branch分组,将组内记录行转列,State是标题列,Amount是取值列,参数计算方法省略取第一个值。
|
Branch |
Florida |
California |
New York |
Texas |
Pennsylvania |
|
branch1 |
28000 |
6000 |
12000 |
|
|
|
branch2 |
20000 |
|
11000 |
10000 |
10000 |
|
branch3 |
|
|
|
11000 |
10000 |
旋转 分组 Branch; 标题列 State; 取值列 Amount; 计数 //焦点表为预算表,按Branch分组,将组内记录行转列,State是标题列,Amount是取值列,对Amount计数,结果如下:
|
Branch |
Florida |
California |
New York |
Texas |
Pennsylvania |
|
branch1 |
3 |
3 |
1 |
|
|
|
branch2 |
1 |
|
2 |
2 |
1 |
|
branch3 |
|
|
|
3 |
2 |
逆向是旋转的逆运算——列转行。其他聚合方法都是行转列,本方法相反:保持分组列不变,把组内的列转为行。原表的列标题变为新标题列的值,原表的列值变为新取值列的值。
成绩表数据:
|
ClassNew |
StuID |
English |
Math |
PE |
|
Class one |
1 |
84 |
77 |
69 |
|
Class one |
2 |
81 |
80 |
97 |
|
Class one |
3 |
75 |
86 |
67 |
|
Class one |
4 |
96 |
63 |
81 |
|
Class one |
5 |
72 |
60 |
91 |
旋转 分组 ClassNew StuID; 标题列 SUBJECT; 取值列 SCORE 逆向 //焦点表为成绩表,保持ClassNew、StuID列不变,将其他列进行列转行,原其他列的标题转为新列SUBJECT的值,原其他列的列值转为新列SCORE的值,结果如下:
|
ClassNew |
StuID |
SUBJECT |
SCORE |
|
Class one |
1 |
English |
84 |
|
Class one |
1 |
Math |
77 |
|
Class one |
1 |
PE |
69 |
|
Class one |
2 |
English |
81 |
|
Class one |
2 |
Math |
80 |
|
Class one |
2 |
PE |
97 |
|
Class one |
3 |
English |
75 |
|
Class one |
3 |
Math |
86 |
|
Class one |
3 |
PE |
67 |
|
Class one |
4 |
English |
96 |
|
Class one |
4 |
Math |
63 |
|
Class one |
4 |
PE |
81 |
|
Class one |
5 |
English |
72 |
|
Class one |
5 |
Math |
60 |
|
Class one |
5 |
PE |
91 |
参数:表头 <标题值集合>
旋转后新列标题默认用参数标题列 <列名>的列值自动生成。本参数可指定参与旋转的标题值。
<标题值集合>中每个成员值生成一列,按照集合中的顺序排列,标题值在焦点表中不存在则生成空列,参数中未列出的值不参与旋转也不生成列。
可选,不可省略参数名。
示例:
旋转 分组 Branch, Dept; 标题列 State; 取值列 Amount; 表头 Florida,'New York',Test //焦点表是预算表, 按Branch、Dept分组,将组内记录行转列,State是标题列,Amount是取值列,Florida,'New York'为表头,Test值在焦点表中不存在旋转后生成空列,State中的其余值不参与旋转也不生成列,结果如下:
|
Branch |
Dept |
Florida |
New York |
Test |
|
branch1 |
Administration |
28000 |
|
|
|
branch1 |
Finance |
|
|
|
|
branch1 |
Marketing |
|
12000 |
|
|
branch1 |
Production |
15000 |
|
|
|
branch1 |
Sales |
4000 |
|
|
|
branch2 |
Finance |
20000 |
11000 |
|
|
branch2 |
HR |
|
|
|
|
branch2 |
Marketing |
|
|
|
|
branch2 |
R&D |
|
|
|
|
branch2 |
Sales |
|
15000 |
|
|
branch3 |
Finance |
|
|
|
|
branch3 |
Marketing |
|
|
|
|
branch3 |
Production |
|
|
|
|
branch3 |
R&D |
|
|
|
|
branch3 |
Sales |
|
|
|