该方法比较耗时,也有很多限制,希望能找到更好的方式解决。
已知数据:源数据列中的值按顺序排成一列
一、字段分析
1.找到分割字符a,和唯一字段b;
2.找到所有b及前后的分割字符的序号max(a),min(a);
3.关联源数据列中值与2中的任一结果;
二、分割源数据列
4.找到满足 count>=count(b)-1即count(min(a)) 且 count<count(max(a)) 条件的值后,进行分割;
三、分割后排序
5.按分割后的组排序;
四、按字段数计算列数
6.字段数为4,按排序结果计算该值在新表中的列数
排序 | 源数据列 | 各字段分析 | 分割源数据列 | 分割后排序 | 按字段数(4)计算列数 | |
1 | 0 | |||||
2 | 0 | |||||
3 | 0 | |||||
4 | 0 | |||||
5 | 0 | |||||
6 | 0 | |||||
7 | a | 分割字符 | 0 | 0 | int(0/2) | 0 |
8 | b | 唯一提取字段 | 0 | 1 | int(1/2) | 0 |
11 | a1 | 0 | 2 | int(2/2) | 1 | |
12 | b1 | 0 | 3 | int(3/2) | 1 | |
13 | a2 | 0 | 4 | int(4/2) | 2 | |
14 | b2 | 0 | 5 | int(5/2) | 2 | |
15 | a3 | 0 | 6 | int(6/2) | 3 | |
16 | b3 | 0 | 7 | int(7/2) | 3 | |
17 | a4 | 0 | 8 | int(8/2) | 4 | |
18 | b4 | 0 | 9 | int(9/2) | 4 | |
19 | a | 分割字符 | ||||
20 | e | |||||
21 | f | |||||
22 | g | |||||
23 | a1 | |||||
24 | e1 | |||||
25 | f1 | |||||
26 | g1 | |||||
27 | a2 | |||||
28 | e2 | |||||
29 | f2 | |||||
30 | g2 | |||||
31 | a3 | |||||
32 | e3 | |||||
33 | f3 | |||||
34 | g3 | |||||
35 | a4 | |||||
36 | e4 | |||||
37 | f4 | |||||
38 | g4 | |||||
39 | a | 分割字符 | 1 | 0 | int(0/2) | 0 |
40 | b | 唯一提取字段 | 1 | 1 | int(1/2) | 0 |
43 | a5 | 1 | 2 | int(2/2) | 1 | |
44 | b5 | 1 | 3 | int(3/2) | 1 | |
45 | a6 | 1 | 4 | int(4/2) | 2 | |
46 | b6 | 1 | 5 | int(5/2) | 2 | |
47 | a7 | 1 | 6 | int(6/2) | 3 | |
48 | b7 | 1 | 7 | int(7/2) | 3 | |
49 | a8 | 1 | 8 | int(8/2) | 4 | |
50 | b8 | 1 | 9 | int(9/2) | 4 | |
51 | a | 分割字符 |
最终结果:
a | b |
a1 | b1 |
a2 | b2 |
a3 | b3 |
a4 | b4 |
a1 | b5 |
a2 | b6 |
a3 | b7 |
a4 | b8 |