miércoles, 8 de octubre de 2014

Concatenar varias filas en una sola cadena de texto T-SQL usando COALESCE

Posted by InfoTacticas Soluciones  |  No comments

Hola, si necesitan concatenar varias filas de una tabla en una sola cadena de texto, entonces pueden usar la función coalesce en T-SQL.

Voy a mostrar un ejemplo haciendo uso de una tabla Proveedor y otra tabla ProveedorContacto, tal como se ve en la imagen. La Tabla ProveedorContacto almacena nombres, apellidos, cargo de contactos asociados a algún proveedor a través del campo IdProveedor.
Si lo que necesitamos es mostrar en una cadena el nombre y los apellidos de los contactos del proveedor: Quimica Suiza (IdProveedor = 2) separados por comas. Entonces, el código T-SQL empleado sería como sigue:




--
--
DECLARE @valores VARCHAR(1000)
SELECT @valores= COALESCE(@valores + ', ', '') + (Nombres + ' ' + ApellidoPaterno) 
FROM [ProveedorContacto] where IdProveedor = 2
select @valores

El resultado sería el siguiente:
Sin embargo, hay que tener cuidado cuando un campo que se está concatenando tiene valores nulos, en este caso conviene usar (ISNULL(Nombres, '') + ' ' + ISNULL(ApellidoPaterno, ''))  ... con la función ISNULL se busca remplazar los valores nulos (en caso hubieran) por cadenas vacías.

Pero si queremos obtener el listado de contactos de cada proveedor, entonces hay que emplear For XML PATH ('') para poder concatenar. Está información está detallada en mi post: 


10/08/2014 10:50:00 a. m. Share:

0 comentarios:

back to top