Si conoce el número de entradas GROUP_CONCAT (me refiero a que se combinan 3 campos en el caso de ID =1 y 2 campos se combinan en el caso de 2, etc.), entonces hay una manera sucia.
SELECT ID, SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NAME), ',', 1), ',', -1) AS CODE1,
If( length(GROUP_CONCAT(NAME)) - length(replace(GROUP_CONCAT(NAME), ',', ''))>1,
SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NAME), ',', 2), ',', -1) ,NULL)
as CODE2,
SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NAME), ',', 3), ',', -1) AS CODE3
FROM test
GROUP BY ID;
Salida:
ID CODE1 CODE2 CODE3
1 A B C
2 D (null) E
3 F G H
La consulta anterior asume que está GROUP_CONCAT-ing 3 campos. Si está generando consultas dinámicamente, puede intentarlo. SQLFIDDLE
EDITAR: Nota:El CÓDIGO puede variar para cada FILA.( Ignorando esto)