varios varias unir una separar separados separado resultado registros por filas datos convertir concatenar como comas coma columna campo cadena sql sql-server list function concatenation

varias - unir filas en sql server



¿Cómo puedo combinar varias filas en una lista delimitada por comas en SQL Server 2005? (5)

A partir de SQL 2017, puede usar STRING_AGG

SELECT STRING_AGG (X + '','' + Y, '','') AS XYLIST FROM POINTS

https://docs.microsoft.com/en-us/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-2017

En este momento, tengo una consulta SQL como esta:

SELECT X, Y FROM POINTS

Devuelve resultados así:

X Y ---------- 12 3 15 2 18 12 20 29

Me gustaría devolver los resultados en una sola fila, así (adecuado para usar en una etiqueta HTML <AREA>):

XYLIST ---------- 12,3,15,2,18,12,20,29

¿Hay alguna manera de hacer esto usando solo SQL?



Usando el truco de COALESCE , no tienes que preocuparte por la coma final:

DECLARE @XYList AS varchar(MAX) -- Leave as NULL SELECT @XYList = COALESCE(@XYList + '','', '''') + CONVERT(varchar, X) + '','' + CONVERT(varchar, Y) FROM POINTS


DECLARE @XYList varchar(MAX) SET @XYList = '''' SELECT @XYList = @XYList + CONVERT(varchar, X) + '','' + CONVERT(varchar, Y) + '','' FROM POINTS -- Remove last comma SELECT LEFT(@XYList, LEN(@XYList) - 1)


DECLARE @s VarChar(8000) SET @s = '''' SELECT @s = @s + '','' + CAST(X AS VarChar) + '','' + CAST(Y AS VarChar) FROM POINTS SELECT @s

Solo deshazte de la coma inicial