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

Комбинирайте множество резултати в подзаявка в една стойност, разделена със запетая

Дори това ще служи на целта

Примерни данни

declare @t table(id int, name varchar(20),somecolumn varchar(MAX))
insert into @t
    select 1,'ABC','X' union all
    select 1,'ABC','Y' union all
    select 1,'ABC','Z' union all
    select 2,'MNO','R' union all
    select 2,'MNO','S'

Запитване:

SELECT ID,Name,
    STUFF((SELECT ',' + CAST(T2.SomeColumn AS VARCHAR(MAX))
     FROM @T T2 WHERE T1.id = T2.id AND T1.name = T2.name
     FOR XML PATH('')),1,1,'') SOMECOLUMN
FROM @T T1
GROUP BY id,Name

Изход:

ID  Name    SomeColumn
1   ABC     X,Y,Z
2   MNO     R,S


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкване на резултати от съхранена процедура във временна таблица

  2. TABLESAMPLE връща грешен брой редове?

  3. Премахнете и намалете припокриващите се периоди от време

  4. 2 начина да получите езика по подразбиране на вход в SQL Server (T-SQL)

  5. SQL Server (localdb)\v11.0 е обяснено