ホームページ >データベース >mysql チュートリアル >LISTAGG を使用せずに SQL Server でグループ化された文字列集計を実行する方法
SQL Server でのグループ化された文字列集計
SQL Server を使用する場合の一般的なタスクの 1 つは、複数の行から文字列値を 1 つの行に集計することです。 , カンマ区切りの文字列。たとえば、自動車メーカーとモデルを含むテーブルがある場合、自動車モデルを自動車メーカー別にグループ化するデータセットを作成するとよいでしょう。
SQL Server の LISTAGG の代替手段
Oracle では、このタスクは通常、LISTAGG 関数を使用して実行されます。ただし、SQL Server には、同等の LISTAGG が組み込まれていません。代わりに、STUFF 関数と FOR XML PATH 関数を組み合わせて使用すると、同じ結果を得ることができます。
次のクエリは、STUFF と FOR XML PATH を使用して SQL Server でグループ化された文字列の集計を実現する方法を示しています。
SELECT make.CarMakeID, make.CarMake, ( SELECT STUFF( ( SELECT ',' + model.CarModel FROM CarModels WHERE model.CarMakeID = make.CarMakeID FOR XML PATH('') ), 1, 1, '' ) AS CarModels ) FROM CarMakes AS make;
このクエリでは、サブクエリが FOR XML PATH 関数を使用して、自動車モデルをコンマで区切られた単一の XML 文字列に連結します。次に、STUFF 関数は先頭のカンマを削除し、連結された文字列を CarModels 列として返します。
クエリの出力は次のとおりです。
| CarMakeID | CarMake | CarModels | |----------|---------|-----------| | 1 | SuperCars | Zoom, Wow, Awesome | | 2 | MehCars | Mediocrity, YoureSettling |
この手法は、簡単で効率的な方法を提供します。文字列の連結が複雑な場合や特殊文字が含まれている場合でも、SQL Server でグループ化された文字列の集計を実現します。
以上がLISTAGG を使用せずに SQL Server でグループ化された文字列集計を実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。