用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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 11g 新聚集函式listagg實現列轉行Oracle函式
- 【函式】Oracle12c 列轉行函式使用listagg函式Oracle
- 列轉行聚合的簡單實現ORACLE WM_CONCAT LISTAGG函式Oracle函式
- LISTAGG 函式函式
- Oracle 11g Pivot函式實現行轉列Oracle函式
- Oracle 11g使用UNPIVOT函式實現“列轉行”Oracle函式
- Hive行轉列函式Hive函式
- Oracle行轉列函式Oracle函式
- Oracle行轉列的函式Oracle函式
- Sql字串分組Split函式的兩種實現方法SQL字串函式
- 使用Oracle 11g函式Pivot實現資料聚合行轉列Oracle函式
- PL/SQL單行函式和組函式詳解(轉)SQL函式
- 用ORACLE分析函式實現行列轉換Oracle函式
- FlinkSQL使用自定義UDTF函式行轉列-IK分詞器SQL函式分詞
- 使用listagg函式完成行列轉換一例函式
- 用 splice函式分別實現 push、pop、shift、unshi函式
- 用虛擬函式實現事件驅動! (轉)函式事件
- Kettle實現行轉列
- sql實現行轉列SQL
- 分頁函式 (轉)函式
- 二分查詢(函式實現)函式
- 分隔字串實現列轉行字串
- mysql與oracle的分組函式MySqlOracle函式
- 6、Oracle中的分組函式Oracle函式
- 函式組:TRUX 包含很多的轉換函式函式UX
- 虛擬函式實現原理(轉)函式
- JavaScript 中如何實現函式佇列?(一)JavaScript函式佇列
- 用表函式實現OTOP 工具函式
- Oracle11.2新特性之listagg函式Oracle函式
- [Shell] awk 實現列轉行例子
- (函式)實現strstr函式函式
- 用java語言用sort方法實現groupby分組Java
- 【ROLLUP】Oracle分組函式之ROLLUP魅力Oracle函式
- 【CUBE】Oracle分組函式之CUBE魅力Oracle函式
- 關於Oracle自定義分組函式Oracle函式
- oracle行轉列、列轉行、連續日期數字實現方式及mybatis下實現方式OracleMyBatis
- Golang利用select和普通函式分別實現斐波那契數列Golang函式
- SQLServer用函式實現對字串按照特定字元進行拆分SQLServer函式字串字元