1

行をmySQLの列に変換したいと思います。

私は4つのフィールドを持つテーブルを持っています

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で固定されていない数の行を1つの行に「PIVOTする」ことに最も近いのは、この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
于 2012-07-31T03:13:20.013 に答える