sql >> Base de Datos >  >> RDS >> Sqlserver

Concatenar valores basados ​​en ID

No puede estar seguro sobre el orden de las cadenas concatenadas sin una instrucción order by en la subconsulta. El .value('.', 'varchar(max)') parte está ahí para manejar el caso donde Label contiene no compatible con XML caracteres como & .

declare @T table(Response_ID int, Label varchar(50))
insert into @T values
(12147,          'It was not clear'),
(12458,          'Did not Undersstand'),
(12458,          'Was not resolved'),
(12458,          'Did not communicate'),
(12586,          'Spoke too fast'),
(12587,          'Too slow')

select T1.Response_ID,
       stuff((select ','+T2.Label
              from @T as T2
              where T1.Response_ID = T2.Response_ID
              for xml path(''), type).value('.', 'varchar(max)'), 1, 1, '') as Label
from @T as T1
group by T1.Response_ID