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.RazonSocialEl resultado se muestra a continuación:
10/08/2014 03:21:00 p. m.
Share:
0 comentarios: