Los casos prácticos para concatenar consultas en un campo SQL es agrupar categorías de productos, correos de electrónicos o un ranking de los productos más vendidos. Y todo esto en una sola línea y separado por comas.
Te voy a enseñar cómo hacerlo en 3 sencillos pasos:
Paso 1. Preparamos nuestra consulta SQL
Lo primero que vamos a hacer es preparar la consulta SQL. Vamos a filtras unos productos por la categoría “Frutas“. Os muestro un ejemplo:
SELECT id,nombre,tipo,precio
FROM productos
WHERE tipo = 'Frutas'
Obtendremos una consulta como esta:
id
nombre
tipo
precio
1567
Manzanas
Frutas
0.51
4543
Naranjas
Frutas
3.60
6678
Peras
Frutas
2.60
3345
Mangos
Frutas
2.70
0034
Kiwis
Frutas
4.20
Paso 2. Convertir la consulta en XML
Existe una característica integrada SQL Server que sirve para obtener resultados en formato XML. Se trata de FOR XML.
Vamos a unificar todas los nombres de las frutas. Para ello, vamos a añadir una coma ‘,’ antes del campo de “nombre” , y, al final de la consulta añadimos lo siguiente FOR XML PATH (”).
SELECT ','+nombre
FROM productos
WHERE tipo = 'Frutas'
FOR XML PATH ('')
Tendremos el siguiente resultado:
,Manzanas,Naranjas,Peras,Mangos,Kiwis
Paso 3. Quitamos la coma inicial
Ya tenemos casi los registros concatenados, nos falta quitar la coma del principio. Para librarnos de ella hay una función específica de T-SQL que se llama STUFF.
¿Qué hace STUFF? Elimina los caracteres que le indiquemos mediante parámetro y lo sustituye por lo que que queramos. En dos palabras, lo que hace es quitar y rellenar.
SELECT STUFF(
(SELECT ','+nombre
FROM productos
WHERE tipo = 'Frutas'
FOR XML PATH ('')
),1,2, '')
Y este sería nuestro resultado final:
Manzanas,Naranjas,Peras,Mangos,Kiwis
Si sigues todos los pasos correctos, paso por paso podrás concatenar consultas en un campo SQL al primer intento.