SQL: Concatenar varios registros de una columna en una sola cadena


English Version

Es probable que tengamos varios registros pertenecientes a una columna o campo que debamos concatenar y mostrar en una sola cadena. Algo así:

descripcion
===========
valor1
valor2
valor3

y necesitamos obtener algo así:

valor1, valor2, valor3

es decir, como si tuvieramos que trasponer la columna, pero sin complicarnos.

La solución es la siguiente:

DECLARE @valores VARCHAR(1000)
SELECT @valores= COALESCE(@valores + ', ', '') + descripcion FROM carpetas
select @valores as valores

La magia la hace el comando COALESCE que devuelve la expresión que no contenga el valor NULL entre sus argumentos.

OJO: Esta solución es válida solo si ningún renglon es NULL.

10 thoughts on “SQL: Concatenar varios registros de una columna en una sola cadena

  1. Gracias, gracias…. busque por mucho lados y en todos estaban procedimientos muy complicados y confusos pero sabia que debia de haber algo mas sencillo he inteligente.
    Saludos desde Nicaragua.

  2. He visto muchas formas complicadas (PIVOT y UNPIVOT), ingeniosas (XML PATH y STUFF) de conseguir prácticamente lo mismo y, sinceramente, esta es la más fácil, la más ingeniosa y probablemente la mejor que he visto (y llevo más de 15 años con SQL). Simplemente, tu kung-fu es el mejor.

    Saludos!!!

Leave a comment