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?
Gracias por las respuestas rápidas y útiles chicos!
Acabo de encontrar otra manera rápida de hacer esto también:
SELECT STUFF(( SELECT '','' + X + '','' + Y
FROM Points
FOR
XML PATH('''')
), 1, 1, '''') AS XYList
El crédito va para este tipo:
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