miércoles, 8 de octubre de 2014

Concatenar varias filas en una sola cadena usando For XML PATH

Para concatenar varias filas en una sola, se puede usar cursores, sin embargo una solución mucho más rápida es usar la clausula FOR XML utilizando el modo PATH. Adicionalmente será necesario eliminar una coma que se coloca al inicio de la cadena y para ello se puede usar la función STUFF que sirve para ingresar una cadena en otra a partir de los parámetros de posición y longitud, o también se puede usar la función substring tal como veremos más adelante en este post.


Voy a hacer 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.


Al final lo que buscamos es por cada proveedor, listar en una cadena el nombre y los apellidos de sus contactos.


FOR XML PATH, sirve para devolver una consulta en formato XML.

select t1.IdProveedor, p.RazonSocial,
stuff((select ', ' + t2.Nombres + ' ' + t2.ApellidoPaterno 
from ProveedorContacto  t2 
where t1.IdProveedor = t2.IdProveedor 
for xml path('')),1,2,'') 'Contactos '
from ProveedorContacto  t1
inner join Proveedor p on  t1.IdProveedor = p.IdProveedor
group by t1.IdProveedor, p.RazonSocial
El resultado se muestra a continuación:
concatenar sql server
Posted by InfoTacticas Soluciones  |  No comments

10/08/2014 03:21:00 p. m. Share:

0 comentarios:

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

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:

coalesce concatenar sql server
Posted by InfoTacticas Soluciones  |  No comments

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

0 comentarios:

back to top