我想将行转换为mySQL的列。
我有一个包含四个字段的表
Excode SyID adno Mark
IA1 1 2220 70
IA1 1 2134 75
IA1 3 2220 73
IA1 3 2134 80
IA2 1 2220 81
IA2 1 2134 79
IA2 3 2220 65
IA2 3 2134 72
.....
.....
“SyID”和“adno”将保留在列本身中,“Excode”中唯一值的no.s应按列增加,如下所示
SyID adno IA1 IA2 ..... ...... .....
1 2220 70 81 ..... ...... .....
3 2220 73 65 ..... ...... .....
1 2134 75 79 ..... ...... .....
3 2134 80 72 ..... ...... .....
.. ...... ..... .... ..... ...... .....
.. ...... ..... .... ..... ...... .....
请指导我。感谢你。
答案 0 :(得分:4)
也许你最接近“在Pivoting”中将非固定数量的行放入MySQL的单行中就是使用GROUP_CONCAT()
函数。这并不能完全将所有Excode
分成单独的列,而是作为单个分隔的字符串:
SELECT SyID,
adno,
GROUP_CONCAT(CONCAT(Excode, ': ', Mark) SEPARATOR ' / ') AS ExcodeMarks
FROM tbl
GROUP BY SyID, adno
这会产生与你想要的类似的东西:
SyID | adno | ExcodeMarks
----------------------------------------------
1 | 2220 | IA1: 70 / IA2: 81
3 | 2220 | IA1: 73 / IA2: 65
1 | 2134 | IA1: 75 / IA2: 79
3 | 2134 | IA1: 80 / IA2: 72