グループ化された文字列集計: 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 サイトの他の関連記事を参照してください。