ホームページ >データベース >mysql チュートリアル >同等の LISTAGG を使用して SQL Server の文字列フィールドを集計する方法
質問: 他のデータベース システムの LISTAGG 関数と同様に、SQL Server クエリの文字列フィールドを効率的に集計するにはどうすればよいですか?
解決策:
SQL Server は、LISTAGG 関数の同等の代替として STRING_AGG
関数を提供します。 その構文は次のとおりです:
<code class="language-sql">STRING_AGG ( expression, separator ) WITHIN GROUP ( ORDER BY order_expression [ ASC | DESC ] )</code>
expression
: 集計する文字列式。 separator
: 集計文字列を区切るために使用される文字または文字列。 order_expression
: 集計文字列をソートするために使用される式。 ASC
は昇順、DESC
は降順を意味します。 例:
MyTable
という 2 つのフィールド FieldA
と FieldB
を含むテーブルがあるとします。次のクエリは、STRING_AGG
関数を使用して、FieldB
内の値をコンマ区切りの文字列に集計し、FieldA
でグループ化します。
<code class="language-sql">SELECT FieldA, STRING_AGG(FieldB, ',') WITHIN GROUP (ORDER BY FieldB) AS AggregatedFieldB FROM MyTable GROUP BY FieldA ORDER BY FieldA;</code>
期待される結果:
このクエリは、次の形式のような結果を返します:
<code>FieldA | AggregatedFieldB -------|----------------- 1 | Value1, Value2, Value3 2 | Value4, Value5</code>これは、
関数が各 STRING_AGG
グループの FieldA
値を単一の文字列に正常に連結したことを示しています。 結果の文字列内の値は、FieldB
句に従って順序付けされることに注意してください。 ORDER BY FieldB
関数を使用すると、SQL Server で文字列フィールドの集計を簡単に実装でき、データ処理とレポート生成が簡素化されます。 STRING_AGG
以上が同等の LISTAGG を使用して SQL Server の文字列フィールドを集計する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。