Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggabungkan Nilai Berkumpulan dalam SQL Server 2005?

Bagaimana untuk Menggabungkan Nilai Berkumpulan dalam SQL Server 2005?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-09 12:26:441033semak imbas

How to Concatenate Grouped Values in SQL Server 2005?

Gabungkan nilai terkumpul dalam SQL Server

Andaikan anda mempunyai jadual yang mengandungi berbilang nilai yang dikaitkan dengan pengecam unik, contohnya:

<code>+------------+
| Id | Value |
+------------+
| 1  | 'A'   |
|------------|
| 1  | 'B'   |
|------------|
| 2  | 'C'   |
+------------+</code>

Untuk mencapai hasil yang diingini untuk menggabungkan baris dengan Id yang sama ke dalam satu baris dengan nilai gabungan:

<code>+------------+
| Id | Value |
+------------+
| 1  | 'AB'  |
|------------|
| 2  | 'C'   |
+------------+</code>

Dalam SQL Server 2005, adalah mungkin untuk menggunakan fungsi agregat yang ditentukan pengguna. Fungsi ini disediakan dalam pelaksanaan sampelnya untuk melaksanakan tugas penggabungan ini dengan lancar.

<code class="language-sql">-- 创建用户定义的聚合函数
CREATE FUNCTION [dbo].[ConcatValues](@array VARCHAR(MAX))
RETURNS VARCHAR(MAX)
AS
BEGIN
    DECLARE @result VARCHAR(MAX) = '';
    IF @array IS NOT NULL
    BEGIN
        SELECT @result = @result + value
        FROM STRING_SPLIT(@array, ',');
    END
    RETURN @result;
END;

-- 在查询中使用用户定义的聚合函数
SELECT Id, [dbo].[ConcatValues](STRING_AGG(Value, ',')) AS Value
FROM TableName
GROUP BY Id;</code>

Dengan penyelesaian ini, anda boleh memanfaatkan fungsi agregat yang ditentukan pengguna sama seperti fungsi agregat standard yang lain, membolehkan anda memasukkannya dengan lancar ke dalam pertanyaan anda. Ambil perhatian bahawa fungsi STRING_SPLIT tersedia dalam SQL Server 2016 dan lebih baru. Untuk SQL Server 2005, anda perlu menggunakan kaedah alternatif untuk memisahkan rentetan, seperti fungsi tersuai atau kursor. Kod di atas telah dikemas kini untuk menggunakan fungsi STRING_AGG (SQL Server 2017 dan lebih baru), memberikan penyelesaian yang lebih jelas. Untuk SQL Server 2005, anda memerlukan penyelesaian tersuai yang lebih kompleks untuk meniru kefungsian STRING_AGG dan STRING_SPLIT.

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Nilai Berkumpulan dalam SQL Server 2005?. 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