SQL Server リスト集計の詳しい説明
リレーショナル データベースの操作において、データの集約は、複数のレコード情報を意味のある概要に統合するための重要なステップです。リスト集計は、複数の値を 1 つの分離されたリストに連結する集計方法の 1 つです。
SQL Server 自体は、Oracle のような LISTAGG 関数を直接提供しません。ただし、同じ機能はいくつかの手法で実現できます。
方法 1: STRING_AGG (SQL Server 2017 以降)
SQL Server 2017 以降の場合、STRING_AGG 関数はリスト集計のための優れたソリューションを提供します。
<code class="language-sql">SELECT FieldA , STRING_AGG(FieldB, ',') WITHIN GROUP (ORDER BY FieldB) AS FieldBs FROM TableName GROUP BY FieldA ORDER BY FieldA;</code>
方法 2: 再帰的 CTE (SQL Server 2016 以前)
以前のバージョンの SQL Server では、再帰的共通テーブル式 (CTE) を使用してリスト集計を実装できました。
<code class="language-sql"> WITH CTE_TableName AS ( SELECT FieldA, FieldB FROM TableName) SELECT t0.FieldA , STUFF(( SELECT ',' + t1.FieldB FROM CTE_TableName t1 WHERE t1.FieldA = t0.FieldA ORDER BY t1.FieldB FOR XML PATH('')), 1, LEN(','), '') AS FieldBs FROM CTE_TableName t0 GROUP BY t0.FieldA ORDER BY FieldA;</code>
他のデータベースとの互換性
SQL Server 以外のデータベース システムの場合は、次の代替手段を使用できます。
概要
SQL Server にはネイティブの LISTAGG 関数がありませんが、同様の機能を実現する方法はたくさんあります。使用している SQL Server のバージョンに応じて、これらのメソッドは、文字列データを区切りリストに集約するための柔軟なオプションを提供します。
以上がSQL Server でリスト集計を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。