用listagg函式分組實現列轉行
listagg是Oracle 11.2中新增的函式,listagg可以對order by子句中指定的每個組內的資料進行排序,然後連線這些列的值。以下是簡單的應用舉例:
SELECT deptno, listagg(ename, ',') WITHIN GROUP(ORDER BY ename) AS employees FROM scott.emp GROUP BY deptno;
可以在livesql.oracle.com雲平臺中體驗:
再看以下的查詢,包含了重複值:
select d.dname, listagg(e.job, ',') within group(order by e.job) jobs from scott.dept d, scott.emp e where d.deptno = e.deptno group by d.dname;
Oracle 19C做了一個小改進,可以方便的對轉換結果去重,支援distinct關鍵字:
select d.dname, listagg(distinct e.job, ',') within group(order by e.job) jobs from scott.dept d, scott.emp e where d.deptno = e.deptno group by d.dname;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28974745/viewspace-2629901/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【函式】Oracle12c 列轉行函式使用listagg函式Oracle
- Hive行轉列函式Hive函式
- FlinkSQL使用自定義UDTF函式行轉列-IK分詞器SQL函式分詞
- 用函式實現模組化程式設計二函式程式設計
- 用函式實現模組化程式設計三函式程式設計
- 用函式實現模組化程式設計一函式程式設計
- 用 splice函式分別實現 push、pop、shift、unshi函式
- 用函式實現模組化程式設計習題函式程式設計
- 二分查詢(函式實現)函式
- oracle行轉列、列轉行、連續日期數字實現方式及mybatis下實現方式OracleMyBatis
- 用匯編實現add函式函式
- Golang利用select和普通函式分別實現斐波那契數列Golang函式
- 6、Oracle中的分組函式Oracle函式
- SQLServer用函式實現對字串按照特定字元進行拆分SQLServer函式字串字元
- List,DataTable實現行轉列的通用方案
- 斐波那契數列三種實現函式函式
- python 系統函式呼叫sed分組Python函式
- 用Map+函式式介面來實現策略模式函式模式
- 鏈式佇列—用連結串列來實現佇列佇列
- 直播平臺原始碼,FlinkSQL實現行轉列原始碼SQL
- Oracle分組查詢中包含子查詢列,發生ORA-00937:不是單分組函式的錯誤Oracle函式
- Python正規表示式實現非捕獲分組Python
- 資料庫之DQL排序&分組&函式資料庫排序函式
- 行轉列與列轉行
- SQL 行轉列,列轉行SQL
- Mysql - 行轉列、列轉行MySql
- 陣列排序函式-php陣列函式(一)陣列排序函式PHP
- 用雲函式快速實現圖片爬蟲函式爬蟲
- 用函式正規化實現戰略模式函式模式
- 使用 Python 函式進行模組化Python函式
- 位運算實現整數與位元組陣列轉換陣列
- MySQL實現分組排序MySql排序
- 從A到Z,26個實用Python模組/函式速覽Python函式
- MySQL分析函式實現MySql函式
- MySQL排名函式實現MySql函式
- fcntl函式實現dup函式
- Oracle 分組彙總統計函式的使用Oracle函式
- 聚合函式及分組與過濾(GROUP BY … HAVING)函式