Concatenar subconsultas en un único campo en SQL Server

Seguramente os habréis encontrado en situaciones, como yo, en las que teníais que cruzar registros en distintas tablas, y obtener en un único campo el resultado de dicho JOIN, haciendo alguna manipulación "en el camino" sobre algunos o todos los valores "intermedios". Aquí os dejo una sencilla manera de hacerlo, usando una conversión XML "al vuelo". La consulta del ejemplo la lanzo contra la BD AdventureWorks2012 que podéis descargaros aquí.

Básicamente el truco está en tomar los valores del campo que queremos devolver (en el ejemplo sería "Name", el nombre de los departamentos donde cada empleado ha trabajado) en formato XML, que en realidad es una cadena de valores separados por coma, ¡pero añade una al principio!, por lo que debemos eliminarla mediante la sentencia STUFF, que elimina los caracteres indicados en la posición de los primeros argumentos y los reemplaza por el último argumento, en nuestro caso una cadena vacía. Así fácilmente obtenemos lo que queríamos, un listado con todos los empleados y un único campo con todos los departamentos en los que ha trabajado cada uno, ordenados alfabéticamente y separados por coma. ¡Hasta la próxima!




No hay comentarios :

Publicar un comentario

Buscar en el Blog: