Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggabungkan Nilai Dalam Kumpulan dalam Pelayan SQL?

Bagaimana untuk Menggabungkan Nilai Dalam Kumpulan dalam Pelayan SQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-09 12:36:48173semak imbas

How to Concatenate Values Within Groups in SQL Server?

Sertai kumpulan dalam SQL Server

Untuk menyertai nilai dalam kumpulan dalam SQL Server 2005, pertimbangkan untuk menggunakan fungsi agregat yang ditentukan pengguna.

Penyelesaian:

  1. Buat fungsi agregat yang ditentukan pengguna (UDAF):

    <code class="language-sql"> CREATE AGGREGATE [dbo].[ConcatValues] (@str VARCHAR(MAX))
     RETURNS VARCHAR(MAX)
     AS
     BEGIN
         DECLARE @result VARCHAR(MAX) = '',
                 @delim VARCHAR(2) = '';
         WHILE @str IS NOT NULL
         BEGIN
             SET @result = @result + @delim + @str;
             SET @delim = ',';
             SET @str = NEXT VALUE;
         END;
         RETURN @result;
     END;</code>
  2. Gunakan UDAF dalam pertanyaan:

    <code class="language-sql"> SELECT Id, [dbo].[ConcatValues](Value) AS ConcatenatedValues
     FROM YourTable
     GROUP BY Id;</code>

Keputusan:

Id ConcatenatedValues
1 'A,B'
2 'C'

Perhatikan bahawa penyelesaian ini menggunakan gelung WHILE untuk mengulang nilai input dan menggabungkannya menggunakan koma sebagai pemisah. Ini berbeza daripada gelung FOR dalam contoh asal, tetapi melaksanakan fungsi yang sama dan lebih biasa dalam SQL Server. NEXT VALUE digunakan untuk mendapatkan nilai input seterusnya bagi fungsi agregat. YourTable hendaklah digantikan dengan nama jadual sebenar anda.

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Nilai Dalam Kumpulan dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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