Menggabungkan Berbilang Baris Pelayan SQL menjadi Lajur Dipisahkan Koma Tunggal
Panduan ini menunjukkan cara menggabungkan berbilang baris ke dalam satu lajur dengan nilai dipisahkan koma dalam SQL Server. Mari kita gunakan contoh set data ini:
<code class="language-sql">[TicketID], [Person] T0001 Alice T0001 Bob T0002 Catherine T0002 Doug T0003 Elaine</code>
Matlamat kami adalah untuk mencapai output ini:
<code class="language-sql">[TicketID], [People] T0001 Alice, Bob T0002 Catherine, Doug T0003 Elaine</code>
Penyelesaian (SQL Server 2005 dan kemudian):
Pertanyaan SQL berikut memanfaatkan fungsi STUFF
untuk menggabungkan nilai dengan cekap:
<code class="language-sql">SELECT t.TicketID, STUFF(ISNULL((SELECT ', ' + x.Person FROM @Tickets x WHERE x.TicketID = t.TicketID GROUP BY x.Person FOR XML PATH (''), TYPE).value('.','VARCHAR(max)'), ''), 1, 2, '') AS People FROM @Tickets t GROUP BY t.TicketID;</code>
Penjelasan:
STUFF
menggantikan sebahagian daripada rentetan dengan rentetan lain. Di sini, ia mengalih keluar koma di hadapan.FOR XML PATH
membina perwakilan XML data, yang kemudiannya ditukar kepada rentetan dipisahkan koma menggunakan .value('.','VARCHAR(max)')
. Ini ialah teknik biasa untuk pengagregatan rentetan dalam SQL Server.ISNULL
mengendalikan kes di mana TicketID
hanya mempunyai satu orang yang berkaitan, mengelakkan ralat.Kaedah ini menyediakan penyelesaian ringkas dan berkesan untuk menggabungkan berbilang baris ke dalam satu lajur yang dipisahkan koma dalam SQL Server. Ingat untuk menggantikan @Tickets
dengan nama jadual sebenar anda.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Berbilang Baris ke dalam Lajur Dipisahkan Koma Tunggal dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!