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

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

Linda Hamilton
發布: 2025-01-04 22:58:41
原創
185 人瀏覽過

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
登入後複製

但是,如果您使用的Oracle 版本不支援LISTAGG,還有其他方法。一種方法利用分析函數:

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板