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

Cara menggabungkan teks dari beberapa baris menjadi satu string teks di SQL Server

Jika Anda menggunakan SQL Server 2017 atau Azure, lihat jawaban Mathieu Renda.

Saya memiliki masalah serupa ketika saya mencoba menggabungkan dua tabel dengan hubungan satu-ke-banyak. Dalam SQL 2005 saya menemukan bahwa XML PATH metode ini dapat menangani penggabungan baris dengan sangat mudah.

Jika ada tabel bernama STUDENTS

SubjectID       StudentName
----------      -------------
1               Mary
1               John
1               Sam
2               Alaina
2               Edward

Hasil yang saya harapkan adalah:

SubjectID       StudentName
----------      -------------
1               Mary, John, Sam
2               Alaina, Edward

Saya menggunakan T-SQL berikut ini :

SELECT Main.SubjectID,
       LEFT(Main.Students,Len(Main.Students)-1) As "Students"
FROM
    (
        SELECT DISTINCT ST2.SubjectID, 
            (
                SELECT ST1.StudentName + ',' AS [text()]
                FROM dbo.Students ST1
                WHERE ST1.SubjectID = ST2.SubjectID
                ORDER BY ST1.SubjectID
                FOR XML PATH ('')
            ) [Students]
        FROM dbo.Students ST2
    ) [Main]

Anda dapat melakukan hal yang sama dengan cara yang lebih ringkas jika Anda dapat menggabungkan koma di awal dan menggunakan substring untuk melewati yang pertama sehingga Anda tidak perlu melakukan sub-kueri:

SELECT DISTINCT ST2.SubjectID, 
    SUBSTRING(
        (
            SELECT ','+ST1.StudentName  AS [text()]
            FROM dbo.Students ST1
            WHERE ST1.SubjectID = ST2.SubjectID
            ORDER BY ST1.SubjectID
            FOR XML PATH ('')
        ), 2, 1000) [Students]
FROM dbo.Students ST2


  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 Karakter Escape Pencarian Teks Lengkap?

  2. Menjelajahi batasan yang berbeda di SQL Server

  3. 3 Cara Mendapatkan Tipe Data Kolom di SQL Server (T-SQL)

  4. Cara membaca dan menganalisis rencana eksekusi SQL Server

  5. Membuat versi database SQL Server