ホームページ >データベース >mysql チュートリアル >SQL Server の STRING_AGG 関数をグループ化された文字列の集計に使用するにはどうすればよいですか?

SQL Server の STRING_AGG 関数をグループ化された文字列の集計に使用するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-23 20:38:15880ブラウズ

How Can SQL Server's STRING_AGG Function Be Used for Grouped String Aggregation?

グループ化された文字列集計: SQL Server の LISTAGG 関数

SQL Server の文字列集計は、複数の文字列値を 1 つの連結された文字列に結合する方法を提供します。弦。グループ化されたデータを操作する場合、この機能は、個別の値のカンマ区切りリストの生成などのシナリオで非常に重要です。

各自動車メーカー内の自動車モデルを集約する次のスキーマを考えてみましょう。

| CarMakeID | CarMake
------------------------
| 1 | SuperCars
| 2 | MehCars

| CarMakeID | CarModelID | CarModel
-----------------------------------------
| 1 | 1 | Zoom
| 2 | 1 | Wow
| 3 | 1 | Awesome
| 4 | 2 | Mediocrity
| 5 | 2 | YoureSettling

望ましい出力は次のとおりです:

| CarMakeID | CarMake | CarModels
---------------------------------------------
| 1 | SuperCars | Zoom, Wow, Awesome
| 2 | MehCars | Mediocrity, YoureSettling

この集計を実現するために、SQL Server にはいくつかのオプションが用意されています。ただし、文字列連結に推奨されるアプローチは、STRING_AGG 関数を利用することです。

次の改訂されたクエリでは、最初のクエリの AGG の代わりに STRING_AGG 関数が使用されています。

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

STRING_AGG 関数は、列の値を受け取り、すべての個別の値を 1 つの文字列に連結する組み込みの集計関数です。オプションの SEPARATOR パラメータを使用すると、値の間の区切り文字を指定できます。この場合は、カンマを選択しました。

このクエリは、CarModels 列に自動車のカンマ区切りリストが含まれる目的の出力を生成します。各メーカーのモデル

以上がSQL Server の STRING_AGG 関数をグループ化された文字列の集計に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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