ホームページ > データベース > mysql チュートリアル > Oracle SQLで複数の行を単一の行に集約するにはどうすればよいですか?

Oracle SQLで複数の行を単一の行に集約するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-15 18:42:43
オリジナル
641 人が閲覧しました

How to Aggregate Multiple Rows into a Single Row in Oracle SQL?

Oracle SQL は複数の行を 1 つの行にマージします

Oracle データベースでは、テーブル内の複数の行を 1 つの行にマージして、複数の列を含むテーブル構造を作成する必要がある場合があります。次のスキーマを持つテーブルがあるとします:

<code>A 1
A 2
B 1
B 2</code>
ログイン後にコピー

次の期待される結果を達成するには:

<code>A 1 2
B 1 2</code>
ログイン後にコピー

Oracle は、このニーズを満たすために特定の SQL 関数を提供します。

WM_CONCAT 関数 (非推奨)

警告: WM_CONCAT 関数は現在非推奨であり、Oracle 12c 以降では削除されています。それ以降のバージョンで使用すると、予期しない結果が発生する可能性があります。

<code class="language-sql">SELECT field1, WM_CONCAT(field2)
FROM YourTable
GROUP BY field2;</code>
ログイン後にコピー

LISTAGG関数

新しい Oracle バージョンの場合は、LISTAGG 関数を使用することをお勧めします。

<code class="language-sql">SELECT field1, LISTAGG(field2, ',') WITHIN GROUP (ORDER BY field2)
FROM YourTable
GROUP BY field1;</code>
ログイン後にコピー

カスタム集計

WM_CONCAT 関数も LISTAGG 関数も使用している Oracle のバージョンで使用できない場合は、次の手順に従ってカスタム集計を実装できます。

  1. 集計データを保存するための一時テーブルを作成します。
  2. ループまたは再帰を使用して、必要なデータを一時テーブルに挿入します。
  3. 一時テーブルから集計データを取得します。

カスタム集計は、事前定義された関数を使用する場合よりも複雑で、計算量が多くなる場合があることに注意してください。

以上がOracle SQLで複数の行を単一の行に集約するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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