ホームページ >データベース >mysql チュートリアル >T-SQL で複数のレビュー担当者の名を単一のカンマ区切り文字列に連結するにはどうすればよいですか?
T-SQL の複数のレコード フィールドの組み合わせ
T-SQL では、別のフィールドに基づいて複数のレコードのフィールドをグループ化することが必要になることがよくあります。次のシナリオを考えてみましょう:
レビュー、レビュー担当者、および ユーザーの 3 つのテーブルがあります。 Reviews テーブルには、ReviewID と ReviewDate が含まれています。 Reviewers テーブルには、ReviewerID、ReviewID、および UserID が含まれます。最後に、Users テーブルには、UserID、FName、および LName が含まれています。
チャレンジ:
レビューのリストを表示したいとします。各レビューには、対応するレビュー日と、そのレビューに関連付けられたすべてのレビュー担当者の名前のカンマ区切りリストが含まれます。目的の出力は次のようになります:
<code>ReviewID---ReviewDate----Users ---------------------------- 1----------12/1/2009-----Bob, Joe, Frank 2----------12/9/2009-----Sue, Alice</code>
の代わりに:
<code>ReviewID---ReviewDate---User ---------------------------- 1----------12/1/2009----Bob 1----------12/1/2009----Joe 1----------12/1/2009----Frank 2----------12/9/2009----Sue 2----------12/9/2009----Alice</code>
解決策:
この問題を解決する 1 つの方法は、FOR XML PATH('') メソッドを使用することです:
<code class="language-sql">SELECT *, ( SELECT u.FName + ',' FROM @Users u INNER JOIN @Reviewers rs ON u.UserID = rs.UserID WHERE rs.ReviewID = r.ReviewID FOR XML PATH('') ) AS Users FROM @Reviews r</code>
クエリの内訳は次のとおりです:
行 1: Reviews テーブルから必要な列を選択します: ReviewID と ReviewDate。
行 4 ~ 9: サブクエリを使用して、各コメントの名前のカンマ区切りリストを取得します。
行 10: サブクエリの結果には、Users というエイリアスが付けられます。
この改訂された出力はエイリアスを明確にし、読みやすさを向上させます。コア機能は変わらず、レビュー担当者の名をカンマ区切りの文字列に効率的に連結します。
以上がT-SQL で複数のレビュー担当者の名を単一のカンマ区切り文字列に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。