ホームページ >データベース >mysql チュートリアル >複数の SQL 行を単一のカンマ区切り列に連結するにはどうすればよいですか?

複数の SQL 行を単一のカンマ区切り列に連結するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-21 06:51:12986ブラウズ

How to Concatenate Multiple SQL Rows into a Single Comma-Delimited Column?

複数の行を単一のカンマ区切りフィールドに結合するための SQL テクニック

複数行のデータをコンマで区切って 1 つの列に集約することは、データ操作において頻繁に必要となる要件です。 このガイドでは、Microsoft SQL Server 2005 以降に焦点を当てて、SQL を使用してこの連結を実現する方法を説明します。

SQL Server ソリューションは次のとおりです:

<code class="language-sql">SELECT t.TicketID,
       STUFF(ISNULL((SELECT ', ' + x.Person
                FROM @Tickets x
               WHERE x.TicketID = t.TicketID
            GROUP BY x.Person
             FOR XML PATH (''), TYPE).value('.','VARCHAR(max)'), ''), 1, 2, '') AS ConcatenatedPersons
  FROM @Tickets t
GROUP BY t.TicketID</code>

このアプローチでは、STUFF 関数を使用して、連結された文字列から先頭のカンマを効率的に削除します。 ネストされたクエリは、FOR XML PATH を利用して、各 Person に関連付けられた個々の TicketID 値からカンマ区切りのリストを作成します。 ISNULL 関数は、特定のチケット ID に関連付けられている人物がいない場合を処理します。 結果は、各チケットの人物のカンマ区切りリストを含む 1 つの列 (ConcatenatedPersons) になります。 この方法は、SQL Server 内で目的の連結を実現するクリーンかつ効率的な方法を提供します。 最適な結果を得るには、この手法を特定のテーブル名と列名に適用してください。

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

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