ホームページ >データベース >mysql チュートリアル >T-SQL で複数の行を 1 つの列に連結するにはどうすればよいですか?
T-SQL を使用して複数の値を単一の列として返します
単一の属性の複数の値を含むテーブルを扱う場合、効率的なデータ分析のために、これらの値を取得して単一の列にマージする必要があります。この記事では、関数と文字列操作を組み合わせて列内の複数の値を返すソリューションについて詳しく説明します。
例:
ユーザーごとに複数のエイリアスを持つ「UserAliases」テーブルを考えてみましょう:
<code>UserId/Alias 1/MrX 1/MrY 1/MrA 2/Abc 2/Xyz</code>
目標は、データを次の形式に変換することです:
<code>UserId/Alias 1/ MrX, MrY, MrA 2/ Abc, Xyz</code>
解決策:
これには、「COALESCE」関数を使用するカスタム関数「GetAliasesById」を使用します。この関数は変数「@output」を初期化し、カンマで区切られたエイリアス値を繰り返し追加します。以下は関数コードです:
<code class="language-sql">CREATE FUNCTION [dbo].[GetAliasesById] ( @userID int ) RETURNS varchar(max) AS BEGIN declare @output varchar(max) select @output = COALESCE(@output + ', ', '') + alias from UserAliases where userid = @userID return @output END</code>
最後に、データを取得し、「GetAliasesById」関数を適用してエイリアスをマージします。
<code class="language-sql">SELECT UserID, dbo.GetAliasesByID(UserID) FROM UserAliases GROUP BY UserID</code>
このクエリは、各ユーザーの複数のエイリアスを 1 つの列に結合した目的の出力を返します。 「COALESCE」関数は null 値を効率的に処理し、有効な文字列出力を保証します。
以上がT-SQL で複数の行を 1 つの列に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。