Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Połącz wartości na podstawie ID

Nie możesz być pewien kolejności ciągów połączonych bez instrukcji order by w zapytaniu podrzędnym. .value('.', 'varchar(max)') część służy do obsługi przypadku, w którym Label zawiera nieprzyjazne dla XML znaki takie jak & .

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CAST(DATETIME AS DATE) przez klauzulę WHERE

  2. Używanie warunku if we wstawianiu SQL Server

  3. Zwróć listę wszystkich wyzwalaczy serwera w SQL Server

  4. Włączenie programu SQL Server do rozproszonej transakcji XA

  5. Utwórz wyzwalacz DML w SQL Server