separar - split sql
Consulta SQL para obtener un resultado agregado en separadores de coma junto con un grupo por columna en SQL Server (2)
Solo para una vista equilibrada, también puedes hacer esto con un CTE pero no es tan bueno como el método de aplicar la cruz, no creo. He codificado esto del casco para disculpas si no funciona.
WITH CommaDelimitedCTE (RowNumber,ID,[Value],[Values]) AS
(
SELECT 1,MT.ID , MIN(MT.Value), CAST(MIN(MT.Value) AS VARCHAR(8000))
FROM MyTable MT
GROUP BY MT.ID
UNION ALL
SELECT CT.RowNumber + 1, MT.ID, MT.Value, CT.[Values] + '', '' + MT.Value
FROM MyTable MT
INNER JOIN CommaDelimitedCTE CT ON CT.ID = MT.ID
WHERE MT.[Value] > CT.[Value]
)
Select CommaDelimitedCTE.* from CommaDelimitedCTE
INNER JOIN (SELECT MT.ID,MAX(RowNumber) as MaxRowNumber from CommaDelimitedCTE GROUP BY MT.ID) Q on Q.MT.ID = CommaDelimitedCTE.MT.ID
AND Q.MaxRowNumber = CommaDelimitedCTE.RowNumber
Necesito escribir una consulta SQL en la tabla para que el resultado tenga el grupo por columna junto con la columna agregada con separadores de coma.
Mi mesa estaría en el siguiente formato
|`````````|````````|
| ID | Value |
|_________|________|
| 1 | a |
|_________|________|
| 1 | b |
|_________|________|
| 2 | c |
|_________|________|
El resultado esperado debe estar en el formato siguiente
|`````````|````````|
| ID | Value |
|_________|________|
| 1 | a,b |
|_________|________|
| 2 | c |
|_________|________|
Desea utilizar la construcción FOR XML PATH
:
select
ID,
stuff((select '', '' + Value
from YourTable t2 where t1.ID = t2.ID
for xml path('''')),
1,2,'''') [Values]
from YourTable t1
group by ID
La función STUFF
es deshacerse del '', ''
líder.
También puedes ver otros ejemplos aquí: