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

Множество реда до една стойност, разделена със запетая, в Sql Server

Тестови данни

DECLARE @Table1 TABLE(ID INT, Value INT)
INSERT INTO @Table1 VALUES (1,100),(1,200),(1,300),(1,400)

Запитване

SELECT  ID
       ,STUFF((SELECT ', ' + CAST(Value AS VARCHAR(10)) [text()]
         FROM @Table1 
         WHERE ID = t.ID
         FOR XML PATH(''), TYPE)
        .value('.','NVARCHAR(MAX)'),1,2,' ') List_Output
FROM @Table1 t
GROUP BY ID

Набор от резултати

╔════╦═════════════════════╗
║ ID ║     List_Output     ║
╠════╬═════════════════════╣
║  1 ║  100, 200, 300, 400 ║
╚════╩═════════════════════╝

SQL Server 2017 и по-нови версии

Ако работите върху SQL Server 2017 или по-нови версии, можете да използвате вградената функция на SQL Server STRING_AGG, за да създадете списъка, разделен със запетая:

DECLARE @Table1 TABLE(ID INT, Value INT);
INSERT INTO @Table1 VALUES (1,100),(1,200),(1,300),(1,400);


SELECT ID , STRING_AGG([Value], ', ') AS List_Output
FROM @Table1
GROUP BY ID;

Набор от резултати

╔════╦═════════════════════╗
║ ID ║     List_Output     ║
╠════╬═════════════════════╣
║  1 ║  100, 200, 300, 400 ║
╚════╩═════════════════════╝



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Множество реда до една стойност, разделена със запетая, в Sql Server

  2. Как да използвам PHP за свързване към sql сървър

  3. Липсващ индекс на SQL Server

  4. Как мога да вляза в съхранена процедура на SQL Server от моя C# код?

  5. Грешка в операционната система на SQL Server 5:5 (Достъпът е отказан.)