ホームページ >データベース >mysql チュートリアル >SQL Server 2005 でグループ化された値を連結するにはどうすればよいですか?

SQL Server 2005 でグループ化された値を連結するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-09 12:26:441056ブラウズ

How to Concatenate Grouped Values in SQL Server 2005?

SQL Server でグループ化された値をマージする

一意の識別子に関連付けられた複数の値を含むテーブルがあるとします。たとえば、

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

同じ ID を持つ行を、結合された値を持つ 1 つの行にマージして望ましい結果を達成するには:

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

SQL Server 2005 では、ユーザー定義の集計関数を使用できます。この関数は、この連結タスクをシームレスに実行するためにサンプル実装で提供されています。

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

このソリューションを使用すると、ユーザー定義の集計関数を他の標準的な集計関数と同様に利用でき、クエリにシームレスに組み込むことができます。 STRING_SPLIT 関数は SQL Server 2016 以降で使用できることに注意してください。 SQL Server 2005 の場合は、カスタム関数やカーソルなどの別の方法を使用して文字列を分割する必要があります。 上記のコードは、STRING_AGG 関数 (SQL Server 2017 以降) を使用するように更新され、より明確なソリューションを提供します。 SQL Server 2005 の場合、STRING_AGGSTRING_SPLIT の機能をエミュレートするためのより複雑なカスタム ソリューションが必要になります。

以上がSQL Server 2005 でグループ化された値を連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。