ホームページ >データベース >mysql チュートリアル >SQL Serverで複数の行を単一のカンマ区切り列に連結するにはどうすればよいですか?
複数の SQL Server 行を単一のカンマ区切り列に結合する
このガイドでは、SQL Server 内でカンマ区切り値を使用して複数の行を 1 つの列に結合する方法を説明します。 このデータセットの例を使用してみましょう:
<code class="language-sql">[TicketID], [Person] T0001 Alice T0001 Bob T0002 Catherine T0002 Doug T0003 Elaine</code>
私たちの目標は、次の出力を達成することです:
<code class="language-sql">[TicketID], [People] T0001 Alice, Bob T0002 Catherine, Doug T0003 Elaine</code>
解決策 (SQL Server 2005 以降):
次の SQL クエリは、STUFF
関数を利用して値を効率的に連結します。
<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 People FROM @Tickets t GROUP BY t.TicketID;</code>
説明:
STUFF
関数は、文字列の一部を別の文字列に置き換えます。 ここでは、先頭のカンマを削除します。FOR XML PATH
句はデータの XML 表現を構築し、.value('.','VARCHAR(max)')
を使用してカンマ区切りの文字列に変換します。 これは、SQL Server の文字列集計の一般的な手法です。ISNULL
は、TicketID
に関連付けられている人物が 1 人だけである場合を処理し、エラーを防ぎます。この方法は、SQL Server で複数の行を単一のカンマ区切り列に連結するための簡潔で効果的なソリューションを提供します。 @Tickets
を実際のテーブル名に置き換えることを忘れないでください。
以上がSQL Serverで複数の行を単一のカンマ区切り列に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。