ホームページ > データベース > mysql チュートリアル > T-SQL で複数の行を 1 つの列に連結するにはどうすればよいですか?

T-SQL で複数の行を 1 つの列に連結するにはどうすればよいですか?

DDD
リリース: 2025-01-12 09:07:46
オリジナル
1033 人が閲覧しました

How to Concatenate Multiple Rows into a Single Column in T-SQL?

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」を初期化し、カンマで区切られたエイリアス値を繰り返し追加します。以下は関数コードです:

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
ログイン後にコピー

最後に、データを取得し、「GetAliasesById」関数を適用してエイリアスをマージします。

SELECT UserID, dbo.GetAliasesByID(UserID)
FROM UserAliases
GROUP BY UserID
ログイン後にコピー

このクエリは、各ユーザーの複数のエイリアスを 1 つの列に結合した目的の出力を返します。 「COALESCE」関数は null 値を効率的に処理し、有効な文字列出力を保証します。

以上がT-SQL で複数の行を 1 つの列に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート