sql >> Database >  >> RDS >> Sqlserver

Waarden samenvoegen op basis van ID

U kunt niet zeker zijn van de volgorde van de aaneengeschakelde tekenreeksen zonder een instructie op volgorde in de subquery. De .value('.', 'varchar(max)') een deel is er om het geval te behandelen waarin Label bevat XML-onvriendelijk tekens zoals & .

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


  1. Cloudmigratie 101:verhuizen van SQL Server naar Azure

  2. Hoe JSON-gegevens op te halen uit MySQL?

  3. Heeft Mysql een equivalent van @@ROWCOUNT zoals in mssql?

  4. Hoe kunt u de tabellen van de dataset die u retourneert een naam geven in een opgeslagen proces?