SQL: Concatenar varios registros de una columna en una sola cadena / concatenate strings from a column into a single string


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.

 

 

Anuncios

Acerca de hvivani

sysadmin, developer, RHCSA
Esta entrada fue publicada en Uncategorized y etiquetada , . Guarda el enlace permanente.

9 respuestas a SQL: Concatenar varios registros de una columna en una sola cadena / concatenate strings from a column into a single string

  1. soraya dijo:

    justo lo q necesitaba gracias!!! 😀

  2. ERLIN dijo:

    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.

  3. excelente, muchas gracias

  4. Juan Venegas dijo:

    Excelente, Muchas Gracias

  5. Ricardo dijo:

    Perfecto! fue de bastante ayuda, muy agradecido.

  6. Caro Castro dijo:

    Muchísimas gracias!!!

  7. KatiFranco dijo:

    Excelente!

  8. Anónimous dijo:

    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!!!

  9. Juan dijo:

    Este código es la ostía! Muy bueno amigo.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s