Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Beberapa baris ke satu nilai yang dipisahkan koma di Sql Server

Data Uji

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

Kueri

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

Set Hasil

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

SQL Server 2017 dan Versi Lebih Baru

Jika Anda bekerja pada SQL Server 2017 atau versi yang lebih baru, Anda dapat menggunakan Fungsi SQL Server bawaan STRING_AGG untuk membuat daftar yang dipisahkan koma:

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;

Set Hasil

╔════╦═════════════════════╗
║ 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. Memecahkan Masalah Kehabisan Utas Pekerja

  2. Pemantauan TempDB SQL Server dengan Menggunakan Tampilan Manajemen Dinamis (DMV)

  3. Bagaimana saya bisa membandingkan waktu di SQL Server?

  4. Memilih Alat Pemantauan SQL Server yang Sesuai dengan Kebutuhan Anda

  5. Berurusan dengan kesalahan tingkat keparahan tinggi di SQL Server