ホームページ > データベース > mysql チュートリアル > Oracle で複数の行を連結してグループ化する方法

Oracle で複数の行を連結してグループ化する方法

Susan Sarandon
リリース: 2025-01-04 02:56:39
オリジナル
573 人が閲覧しました

How to Concatenate and Group Multiple Rows in Oracle?

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

連結とグループ化が必要な複数の行を含むテーブルがあるシナリオでは、 Oracle 11g の LISTAGG 関数は、簡単な機能を提供します。解決策:

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

LISTAGG 関数は、指定された区切り文字 (ここでは「,」) で区切って、行のグループから複数の値を集計します。これにより、連結とグループ化のプロセスが簡素化され、目的の結果が得られます。

Oracle 11g より前のデータベースの場合は、分析を使用した代替アプローチが利用可能です。

SELECT grp, ltrim(max(sys_connect_by_path(name, ',' )), ',') AS scbp
FROM (
    SELECT name, grp, row_number() OVER (PARTITION BY grp ORDER BY name) AS rn
    FROM tab
)
START WITH rn = 1
CONNECT BY PRIOR rn = rn - 1 AND PRIOR grp = grp
GROUP BY grp
ORDER BY grp
ログイン後にコピー

このクエリは CONNECT BY を利用します。句と row_number() 分析関数を使用して値を繰り返し連結およびグループ化し、LISTAGG と同じ出力を生成します。メソッド。

以上がOracle で複数の行を連結してグループ化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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