Concatenar consultas en un campo SQL

Concatenar consultas en un campo SQL
Concatenar consultas en un campo SQL

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:

idnombretipoprecio
1567ManzanasFrutas0.51
4543Naranjas Frutas3.60
6678Peras Frutas2.60
3345Mangos Frutas2.70
0034Kiwis Frutas4.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.

También te podría gustar...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies