Saltar al contenido

Resultados separados por comas en SQL

Te damos la bienvenida a nuestro sitio, en este sitio vas a encontrar la respuesta que estás buscando.

Solución:

Usar FOR XML PATH('') – que está convirtiendo las entradas a una coma separada string y STUFF() -que es recortar la primera coma- de la siguiente manera Lo que le da el mismo resultado separado por comas

SELECT  STUFF((SELECT  ',' + INSTITUTIONNAME
            FROM EDUCATION EE
            WHERE  EE.STUDENTNUMBER=E.STUDENTNUMBER
            ORDER BY sortOrder
        FOR XML PATH('')), 1, 1, '') AS listStr

FROM EDUCATION E
GROUP BY E.STUDENTNUMBER

Aquí está el VIOLÍN

Para Sql Server 2017 y versiones posteriores, puede usar el nuevo STRING_AGG función

https://docs.microsoft.com/en-us/sql/t-sql/functions/string-agg-transact-sql

El siguiente ejemplo reemplaza null valores con ‘N/A’ y devuelve los nombres separados por comas en una sola celda de resultado.

SELECT STRING_AGG ( ISNULL(FirstName,'N/A'), ',') AS csv 
FROM Person.Person;

Aquí está el conjunto de resultados.

John,N/A,Mike,Peter,N/A,N/A,Alice,Bob

Quizás un caso de uso más común es agrupar y luego agregar, tal como lo haría con SUM, COUNT o AVG.

SELECT a.articleId, title, STRING_AGG (tag, ',') AS tags 
FROM dbo.Article AS a       
LEFT JOIN dbo.ArticleTag AS t 
    ON a.ArticleId = t.ArticleId 
GROUP BY a.articleId, title;

esto funciona en el servidor sql 2016

USE AdventureWorks
GO
DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr+',' ,'') + Name
FROM Production.Product
SELECT @listStr
GO

Te invitamos a patrocinar nuestra labor poniendo un comentario o dejando una puntuación te lo agradecemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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