ホームページ >データベース >mysql チュートリアル >Oracle の LISTAGG 関数のような文字列集計を SQL Server で実現するにはどうすればよいですか?

Oracle の LISTAGG 関数のような文字列集計を SQL Server で実現するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-03 20:05:38853ブラウズ

How Can I Achieve String Aggregation in SQL Server Like Oracle's LISTAGG Function?

SQL Server でのグループ化された文字列集計: LISTAGG の代替手段を見つける

SQL Server では、文字列集計が課題となる場合があります。車のメーカーとモデルをリストするテーブル構造がある場合、Oracle の LISTAGG 関数と同様に、車のモデルをメーカーごとにグループ化し、それらの値を 1 つの列に連結するデータセットを作成するとよいでしょう。

これを実現するにはSQL Server では、FOR XML PATH メソッドを利用できます。次のクエリを考えてみましょう:

SELECT CarMakeID,
       CarMake,
       (SELECT ModelNames.ModelNames
        FROM (SELECT DISTINCT CarModel AS ModelNames
              FROM CarModels
              WHERE CarMakeID = make.CarMakeID
              FOR XML PATH('')
             ) AS ModelNames
       ) AS CarModels
FROM CarMakes make

サブクエリ (SELECT ModelNames.ModelNames... は、FOR XML PATH('') メソッドを使用して各自動車メーカーの個別のモデル名を連結します。これにより、カンマ区切りのモデルのリストは、外側のクエリの CarModels 列に割り当てられます。

元のクエリの AGG(CarModel) をサブクエリに置き換えます。上で説明したように、SQL Server で目的のグループ化と文字列集計を実現できます。

以上がOracle の LISTAGG 関数のような文字列集計を SQL Server で実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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