ホームページ >データベース >mysql チュートリアル >SQL Server で複数のサブクエリ行を 1 つの区切り文字で区切られたフィールドに連結するにはどうすればよいですか?

SQL Server で複数のサブクエリ行を 1 つの区切り文字で区切られたフィールドに連結するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-22 00:22:11503ブラウズ

How Can I Concatenate Multiple Subquery Rows into a Single Delimited Field in SQL Server?

SQL Server でサブクエリ結果を単一の区切られたフィールドに効率的に結合する

SQL Server では、サブクエリの複数の行を区切り文字を使用して 1 つのフィールドに連結する方法がいくつか提供されています。 サーバー側カーソルはオプションですが、多くの場合効率が低くなります。 この記事では、より効果的なテクニックについて説明します。

XML PATH の場合: 古い SQL Server バージョン (2005 以前) のソリューション

SQL Server 2005 以前のバージョンの場合、FOR XML PATH コマンドは簡潔な解決策を提供します。

<code class="language-sql">SELECT [VehicleID]
     , [Name]
     , (STUFF((SELECT CAST(', ' + [City] AS VARCHAR(MAX)) 
         FROM [Location] 
         WHERE (VehicleID = Vehicle.VehicleID) 
         FOR XML PATH ('')), 1, 2, '')) AS Locations
FROM [Vehicle]</code>

これは、XML パス生成を巧みに使用して City 値を連結し、STUFF によって最初のカンマが削除されます。

STRING_AGG: SQL Server 2017 以降の推奨メソッド

SQL Server 2017 以降のバージョンでは、大幅に改善された機能 STRING_AGG が導入されています。

<code class="language-sql">SELECT  [VehicleID]
       ,[Name]
       ,(SELECT STRING_AGG([City], ', ')
         FROM [Location]
         WHERE VehicleID = V.VehicleID) AS Locations
FROM   [Vehicle] V</code>

STRING_AGG はパフォーマンスが向上し、カスタム区切り文字を使用できるため、最新の SQL Server 展開に推奨されるアプローチです。

概要

これらのメソッドは、SQL Server 内で複数のサブクエリ行を単一の区切り文字列に統合する効率的な方法を提供し、データ操作タスクを合理化します。 適切な方法の選択は、SQL Server のバージョンによって異なります。 STRING_AGG は、パフォーマンスと柔軟性が強化されているため、新しいバージョンで推奨される選択肢です。

以上がSQL Server で複数のサブクエリ行を 1 つの区切り文字で区切られたフィールドに連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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