Sertai kumpulan dalam SQL Server
Untuk menyertai nilai dalam kumpulan dalam SQL Server 2005, pertimbangkan untuk menggunakan fungsi agregat yang ditentukan pengguna.
Penyelesaian:
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>
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!