ホームページ >データベース >mysql チュートリアル >LISTAGG を使用せずに SQL Server で行の値を効率的に連結するにはどうすればよいですか?

LISTAGG を使用せずに SQL Server で行の値を効率的に連結するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-20 08:41:16556ブラウズ

How Can I Efficiently Concatenate Row Values in SQL Server Without LISTAGG?

SQL Server での行値の連結: LISTAGG の代替手段

SQL における一般的な課題の 1 つは、行全体の文字列値を集計することです。この点において、LISTAGG は多くのデータベース システムでサポートされている便利な機能です。ただし、SQL Server には、LISTAGG に直接相当するものはありません。

SQL Server で同様の機能を実現するには、メイン クエリ内でサブクエリを利用する方法があります。ただし、以下に示す従来のアプローチには潜在的な欠点があります。

SELECT *, 
 (SELECT AGG(CarModel) 
  FROM CarModels model
  WHERE model.CarMakeID = make.CarMakeID
  GROUP BY make.CarMakeID) as CarMakes
FROM CarMakes make

このクエリでは、AGG は STRING_AGG 関数と GROUP_CONCAT 関数の組み合わせで置き換えることができます。

SELECT *, 
 (SELECT STRING_AGG(CarModel, ', ')
  FROM CarModels model
  WHERE model.CarMakeID = make.CarMakeID
  GROUP BY make.CarMakeID) as CarMakes
FROM CarMakes make

この変更されたクエリSQL Server で行値を連結するための堅牢なソリューションを提供します。ただし、このアプローチのパフォーマンス特性は、データセットのサイズと複雑さによって異なる可能性があることに注意することが重要です。

以上がLISTAGG を使用せずに SQL Server で行の値を効率的に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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