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 サイトの他の関連記事を参照してください。