ホームページ >データベース >mysql チュートリアル >Oracle で複数の行を連結およびグループ化するにはどうすればよいですか?
Oracle での複数の行の連結とグループ化
この記事では、Oracle で複数の行を連結してグループ化するという課題に取り組み、テーブルを変換できるようにします。分散したデータをより組織化された構造にまとめます。次のシナリオを考えてみましょう:
NAME と GROUP_NAME の 2 つの列を含むテーブルがあります:
NAME GROUP_NAME name1 groupA name2 groupB name5 groupC name4 groupA name3 groupC
目的は、一意の GROUP_NAME 値ごとに名前が連結された結果を作成することです:
GROUP_NAME NAMES groupA name1,name4 groupB name2 groupC name3,name5
この場合、Oracle 11g 以降で使用できる LISTAGG 関数は、簡単な解決策:
SELECT group_name, LISTAGG(name, ', ') WITHIN GROUP (ORDER BY GROUP) "names" FROM name_table GROUP BY group_name
ただし、11g より前のバージョンの Oracle を使用している場合は、分析を使用して同じ結果を達成できます:
select grp, ltrim(max(sys_connect_by_path (name, ',' )), ',') scbp from (select name, grp, row_number() over (partition by grp order by name) rn from tab ) start with rn = 1 connect by prior rn = rn-1 and prior grp = grp group by grp order by grp
LISTAGG と分析の両方を活用するを使用すると、Oracle で複数の行を効率的に連結してグループ化し、データをより意味のある表現に変換して、さらなる分析やレポート作成を行うことができます。
以上がOracle で複数の行を連結およびグループ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。