Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menggabungkan Berbilang Baris Pelayan SQL ke dalam Lajur Dibatasi Koma Tunggal?

Bagaimana untuk Menggabungkan Berbilang Baris Pelayan SQL ke dalam Lajur Dibatasi Koma Tunggal?

Barbara Streisand
Lepaskan: 2025-01-21 07:02:36
asal
1086 orang telah melayarinya

How to Combine Multiple SQL Server Rows into a Single Comma-Delimited Column?

Gabungkan berbilang baris ke dalam satu lajur nilai dipisahkan koma dalam SQL Server

Soalan:

Anda perlu menggabungkan berbilang baris dengan pengecam biasa ke dalam satu lajur, di mana nilai dipisahkan dengan koma. Contohnya, anda ingin mendapatkan data daripada:

<code>[TicketID]  [Person]
T0001       Alice
T0001       Bob
T0002       Catherine
T0002       Doug
T0003       Elaine</code>
Salin selepas log masuk

Tukar kepada:

<code>[TicketID]  [People]
T0001       Alice, Bob
T0002       Catherine, Doug
T0003       Elaine</code>
Salin selepas log masuk

Penyelesaian untuk SQL Server 2005:

  1. Gunakan fungsi STUFF untuk menggabungkan nilai ke dalam satu rentetan:
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, '')
Salin selepas log masuk
  1. Klausa FOR XML PATH mengumpulkan nilai dan mengembalikannya sebagai rentetan XML.
  2. Klausa
  3. TYPE menyatakan bahawa hasilnya mestilah rentetan teks.
  4. Fungsi nilai
  5. mengekstrak teks daripada rentetan XML.
  6. Fungsi ISNULL mengendalikan kes di mana tiada nilai untuk digabungkan.
  7. Fungsi STUFF terakhir mengalih keluar koma di hadapan daripada rentetan gabungan, jika ada.

Contoh pertanyaan:

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, '') [无前导逗号],
       ISNULL((SELECT ', ' + x.Person
                FROM @Tickets x
               WHERE x.TicketID = t.TicketID
            GROUP BY x.Person
             FOR XML PATH (''), TYPE).value('.','VARCHAR(max)'), '') [如果非空则有前导逗号]
  FROM @Tickets t
GROUP BY t.TicketID
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Berbilang Baris Pelayan SQL ke dalam Lajur Dibatasi Koma Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan