首頁 > 資料庫 > mysql教程 > 如何在 Oracle 中連線和分組多行?

如何在 Oracle 中連線和分組多行?

DDD
發布: 2025-01-04 05:45:39
原創
722 人瀏覽過

How Can I Concatenate and Group Multiple Rows in Oracle?

在Oracle 中連接和分組多行

本文解決了在Oracle 中連接和分組多行的挑戰,允許您轉換表將分散的數據轉化為更有組織的結構。考慮以下場景:

您有一個包含兩列NAME 和GROUP_NAME 的表:

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板