ホームページ >データベース >mysql チュートリアル >SQL Server 2005 でグループ化された値を連結するにはどうすればよいですか?
一意の識別子に関連付けられた複数の値を含むテーブルがあるとします。たとえば、
<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_AGG
と STRING_SPLIT
の機能をエミュレートするためのより複雑なカスタム ソリューションが必要になります。
以上がSQL Server 2005 でグループ化された値を連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。