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 サイトの他の関連記事を参照してください。