MySQL视图将行转换为列

时间:2012-07-31 02:00:30

标签: mysql view

我想将行转换为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 ..... ...... .....
.. ...... ..... .... ..... ...... .....
.. ...... ..... .... ..... ...... .....

请指导我。感谢你。

1 个答案:

答案 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