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