ホームページ > データベース > mysql チュートリアル > Oracle で行を連結およびグループ化するにはどうすればよいですか?

Oracle で行を連結およびグループ化するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-04 22:58:41
オリジナル
223 人が閲覧しました

How Can I Concatenate and Group Rows in Oracle?

Oracle での複数の行の連結とグループ化

Oracle では、グループ化条件に基づいてレコードを連結するタスクが困難な場合があります。次のようなテーブルについて考えてみましょう:

NAME          GROUP_NAME
name1         groupA
name2         groupB
name5         groupC
name4         groupA
name3         groupC
ログイン後にコピー

「GROUP_NAME」に基づいて「NAME」列をグループ化して連結するという望ましい結果を得るには、Oracle 11g 以降の LISTAGG 関数を利用できます。

SELECT
group_name,
LISTAGG(name, ', ') WITHIN GROUP (ORDER BY GROUP) "names"
FROM name_table
GROUP BY group_name
ログイン後にコピー

ただし、LISTAGG をサポートしていない Oracle バージョンを使用している場合は、別の方法があります。 1 つのアプローチでは、分析関数を利用します。

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

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