tablas - concatenar varias filas en una columna sql server 2008
¿Cómo usar GROUP BY para concatenar cadenas en MySQL? (6)
Básicamente la pregunta es cómo salir de esto:
id string 1 A 1 B 2 C
a esto:
id string 1 A B 2 C
Grandes respuestas. También tuve un problema con NULLS y logré resolverlo al incluir un COALESCE dentro de GROUP_CONCAT. Ejemplo como sigue:
SELECT id, GROUP_CONCAT(COALESCE(string,'''') SEPARATOR '' '')
FROM table
GROUP BY id;
Espero que esto ayude a alguien más
SELECT id, GROUP_CONCAT( string SEPARATOR '' '') FROM table GROUP BY id
Más detalles http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat .
Desde el enlace anterior, GROUP_CONCAT
: esta función devuelve un resultado de cadena con los valores concatenados no NULOS de un grupo. Devuelve NULL si no hay valores que no sean NULL.
SELECT id, GROUP_CONCAT(CAST(string as CHAR)) FROM table GROUP BY id
Te dará una cadena delimitada por comas
SELECT id, GROUP_CONCAT(string SEPARATOR '' '') FROM table GROUP BY id;
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
Desde el enlace anterior, GROUP_CONCAT
: esta función devuelve un resultado de cadena con los valores concatenados no NULOS de un grupo. Devuelve NULL si no hay valores que no sean NULL.
SELECT id, GROUP_CONCAT(string SEPARATOR '' '') FROM table GROUP BY id;
: - En MySQL, puede obtener los valores concatenados de las combinaciones de expresiones. Para eliminar valores duplicados, use la cláusula DISTINCT . Para ordenar los valores en el resultado, use la cláusula ORDER BY. Para ordenar en orden inverso , agregue la palabra clave DESC (descendente) al nombre de la columna que está ordenando en la cláusula ORDER BY. El valor predeterminado es orden ascendente; esto puede especificarse explícitamente usando la palabra clave ASC. El separador predeterminado entre los valores de un grupo es una coma (","). Para especificar un separador explícitamente, use SEPARATOR seguido del valor literal de cadena que se debe insertar entre los valores de grupo. Para eliminar el separador por completo, especifique SEPARATOR '''' .
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
O
mysql> SELECT student_name,
-> GROUP_CONCAT(DISTINCT test_score
-> ORDER BY test_score DESC SEPARATOR '' '')
-> FROM student
-> GROUP BY student_name;
SET group_concat_max_len=100000000