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

Oracle で複数の行の列値を連結するにはどうすればよいですか?

DDD
リリース: 2025-01-23 15:06:09
オリジナル
574 人が閲覧しました

How Can I Concatenate Column Values from Multiple Rows in Oracle?

Oracle の複数の行からの列値の連結: 包括的なソリューション

Oracle は、列を連結する機能など、データ操作のための堅牢な機能を提供します複数の行からの値。次の例を考えてみましょう。ここでは、テーブル A の一意の「PID」値ごとにテーブル B の「Desc」値を結合することを目的としています。

Table A:

PID
A
B
C

Table B:

PID   SEQ    Desc
A     1      Have
A     2      a nice
A     3      day.
B     1      Nice Work.
C     1      Yes
C     2      we can
C     3      do
C     4      this work!
ログイン後にコピー

目的の出力を実現するには、「Desc」列が出力テーブルには、テーブル B の「PID」ごとの「Desc」値が連結されているため、次の SQL クエリを使用できます。

SELECT pid, LISTAGG(Desc, ' ') WITHIN GROUP (ORDER BY seq) AS description
FROM B GROUP BY pid;
ログイン後にコピー

このクエリ指定された列の値を単一の文字列に集計する LISTAGG 関数を利用します。 GROUP BY 句を使用すると、値が「PID」列によって確実にグループ化されます。 ORDER BY 句は、値が連結される順序 (この場合は「SEQ」列によって) をさらに指定します。

プロセスを完了するには、このクエリの出力をテーブル A と結合して、必要に応じて「PID」値をフィルターします:

SELECT A.PID, description
FROM A
INNER JOIN (
    SELECT pid, LISTAGG(Desc, ' ') WITHIN GROUP (ORDER BY seq) AS description
    FROM B GROUP BY pid
) AS B ON A.PID = B.pid;
ログイン後にコピー

結果の出力は次のようになります。以下:

PID   Desc
A     Have a nice day.
B     Nice Work.
C     Yes we can do this work!
ログイン後にコピー

このアプローチでは、Oracle の複数の行の列値を効果的に連結し、データの変換と操作のための強力なツールを提供します。

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

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