ホームページ > データベース > mysql チュートリアル > さまざまな SQL データベースは文字列集計 (LISTAGG) をどのように実装しますか?

さまざまな SQL データベースは文字列集計 (LISTAGG) をどのように実装しますか?

Susan Sarandon
リリース: 2025-01-22 13:06:10
オリジナル
564 人が閲覧しました

How Do Different SQL Databases Implement String Aggregation (LISTAGG)?

さまざまな SQL データベースでの文字列集約

この記事では、異なる SQL データベースを使用して複数の文字列値を 1 つの文字列に連結する方法を説明します。 目標は、文字列フィールドを集計することです。

Oracle と DB2:

Oracle と DB2 は両方とも、組み込みの LISTAGG 関数を提供します。 構文は簡単です:

<code class="language-sql">SELECT FieldA,
       LISTAGG(FieldB, ',') WITHIN GROUP (ORDER BY FieldB) AS FieldBs
FROM TableName
GROUP BY FieldA
ORDER BY FieldA;</code>
ログイン後にコピー

PostgreSQL:

PostgreSQL は STRING_AGG 関数を利用します:

<code class="language-sql">SELECT FieldA,
       STRING_AGG(FieldB, ',') AS FieldBs
FROM TableName
GROUP BY FieldA
ORDER BY FieldA;</code>
ログイン後にコピー

SQL サーバー:

SQL Server 2017 以降のバージョンも STRING_AGG をサポートします。 古いバージョン (2017 年より前) の場合は、STUFFFOR XML PATH を使用したより複雑なアプローチが必要です。

<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>
ログイン後にコピー

SQLite:

SQLite の GROUP_CONCAT 関数は文字列の集計を実行できます。 順序付けには CTE またはサブクエリが必要です:

注文時:

<code class="language-sql">WITH CTE_TableName AS (
    SELECT FieldA, FieldB
    FROM TableName
    ORDER BY FieldA, FieldB
)
SELECT FieldA,
       GROUP_CONCAT(FieldB, ',') AS FieldBs
FROM CTE_TableName
GROUP BY FieldA
ORDER BY FieldA;</code>
ログイン後にコピー

注文なし:

<code class="language-sql">SELECT FieldA,
       GROUP_CONCAT(FieldB, ',') AS FieldBs
FROM TableName
GROUP BY FieldA
ORDER BY FieldA;</code>
ログイン後にコピー

以上がさまざまな SQL データベースは文字列集計 (LISTAGG) をどのように実装しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート