1

我想将行转换为 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”中唯一值的数量应在列中增加,如下所示

SyID adno IA1 IA2 ..... ...... .....
1    2220  70  81 ..... ...... .....
3    2220  73  65 ..... ...... .....
1    2134  75  79 ..... ...... .....
3    2134  80  72 ..... ...... .....
.. ...... ..... .... ..... ...... .....
.. ...... ..... .... ..... ...... .....

请指导我。感谢您。

4

1 回答 1

4

也许您最接近在 MySQL 中将非固定数量的行“PIVOTing”成单行的方法是使用该GROUP_CONCAT()函数。这不会完全让你把所有的Excodes 放到单独的列中,而是作为一个单独的分隔字符串:

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
于 2012-07-31T03:13:20.013 回答