Oracle 11g 新聚集函式listagg實現列轉行
先上語法:
LISTAGG ( column | expression, delimiter ) WITHIN GROUP (ORDER BY column | expression)
這是一個聚集函式。通過一個例子來說明其用法:
SELECT department_id, LISTAGG(last_name, '; ')
WITHIN GROUP (ORDER BY hire_date, last_name) "Emp_list"
FROM employee group by department_id;
10 Eckhardt; Newton; Friedli; James; Michaels; Dovichi 20 peterson; leblanc 30 Jeffrey; Wong Newton
可以看到簡單一行程式碼實現了列轉行功能。在這之前需要用decode()窮舉各種可能來實現,假如無法窮舉需要寫一大段函式(詳見asktom.oracle.com)。
在這個例子裡,last_name根據department_id聚集,同一department_id下所有last_name作為一組出現。
listagg作為分析函式
SELECT department_id "Dept", hire_date "Date", last_name "Name",
LISTAGG(last_name, '; ') WITHIN GROUP (ORDER BY hire_date, last_name)
OVER (PARTITION BY department_id) as "Emp_list"
FROM employee
ORDER BY "Dept", "Date", "Name";
這段SQL查詢每個部門裡每個人,他的入職日期,所有同部門的同事。按照部門,入職日期,員工姓名排序。
10 2004/07/07 Eckhardt Eckhardt; Newton; Friedli; James; Michaels; Dovichi
10 2006/09/24 Newton Eckhardt; Newton; Friedli; James; Michaels; Dovichi
10 2007/05/16 Friedli Eckhardt; Newton; Friedli; James; Michaels; Dovichi
10 2007/05/16 James Eckhardt; Newton; Friedli; James; Michaels; Dovichi
10 2007/05/16 Michaels Eckhardt; Newton; Friedli; James; Michaels; Dovichi
10 2011/07/07 Dovichi Eckhardt; Newton; Friedli; James; Michaels; Dovichi
20 2008/11/03 peterson peterson; leblanc
20 2009/03/06 leblanc peterson; leblanc
30 2010/02/27 Jeffrey Jeffrey; Wong
30 2010/02/27 Wong Jeffrey; Wong
2005/09/14 Newton Newton
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/638844/viewspace-767867/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用listagg函式分組實現列轉行函式
- Oracle 11g Pivot函式實現行轉列Oracle函式
- 【函式】Oracle12c 列轉行函式使用listagg函式Oracle
- Oracle 11g使用UNPIVOT函式實現“列轉行”Oracle函式
- 列轉行聚合的簡單實現ORACLE WM_CONCAT LISTAGG函式Oracle函式
- 使用Oracle 11g函式Pivot實現資料聚合行轉列Oracle函式
- Oracle行轉列函式Oracle函式
- Oracle11.2新特性之listagg函式Oracle函式
- Oracle行轉列的函式Oracle函式
- oracle聚集函式排序Oracle函式排序
- Oracle自定義聚集函式Oracle函式
- LISTAGG 函式函式
- oracle 11g的行轉列、列轉行Oracle
- Oracle自定義聚集函式薦Oracle函式
- Hive行轉列函式Hive函式
- oracle 10g 新增:自定義聚集函式Oracle 10g函式
- 用ORACLE分析函式實現行列轉換Oracle函式
- 轉:對字串的“sum”——在Oracle中自定義聚集函式的例子字串Oracle函式
- oracle行轉列、列轉行、連續日期數字實現方式及mybatis下實現方式OracleMyBatis
- 使用listagg函式完成行列轉換一例函式
- Kettle實現行轉列
- sql實現行轉列SQL
- ORACLE單行函式與多行函式之五:轉換函式示例Oracle函式
- 分隔字串實現列轉行字串
- 虛擬函式實現原理(轉)函式
- JavaScript 中如何實現函式佇列?(一)JavaScript函式佇列
- oracle 列轉行Oracle
- oracle列轉行Oracle
- [Shell] awk 實現列轉行例子
- (函式)實現strstr函式函式
- Oracle 11g 新特性(轉載)Oracle
- oracle 分析函式(轉)Oracle函式
- Oracle分析函式{轉}Oracle函式
- oracle字串函式(轉)Oracle字串函式
- ORACLE函式大全(轉)Oracle函式
- Oracle字串函式--轉Oracle字串函式
- 使用rownum及replace實現行轉列
- sql內建函式pivot強大的行轉列功能SQL函式