miércoles, 8 de octubre de 2014

Concatenar varias filas en una sola cadena usando For XML PATH

Posted by InfoTacticas Soluciones  |  No comments

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:

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

0 comentarios:

back to top