Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Конкатениране на стойности въз основа на ID

Не можете да сте сигурни в реда на конкатенираните низове без оператор за подреждане в подзаявката. .value('.', 'varchar(max)') част е там, за да се справи със случая, когато Label съдържа неподходящ за XML символи като & .

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. SELECT max(x) връща null; как мога да го накарам да върне 0?

  2. Бавно насипно вмъкване за таблица с много индекси

  3. Най-простият начин да направите рекурсивно самоприсъединяване?

  4. Мога ли да имам външен ключ, препращащ колона в изглед в SQL Server?

  5. SQL Server Висока наличност:Добавете нов диск към съществуващ екземпляр на клъстер за отказване