Oracle 11g Pivot函式實現行轉列
先上語法規範:
SELECT .... FROMPIVOT ( aggregate-function( ) FOR IN ( , ,..., ) ) AS WHERE .....
通過一個例子說明其用法:
select * from (select salary, department_id from employee) pivot(sum(salary) as sum_sal for(department_id) in (10,20,30));
10_sum_sal 20_sum_sal 30_sum_sal
370000 155000 370000
在這個例子中,工資按照指定部門做聚集後,成為獨立的列顯示出來。有幾個部門,就有幾列;而總是隻有一行。即是說,達到了行轉列的效果。這種效果的報表在BI/DW應用中很常見。
注意:IN語句是必須的。也就是說,在執行SQL之前必須知道department_id
再進一步,按照多個列作行轉列
select * from (select salary, department_id,manager from employee) pivot(sum(salary) for(department_id,manager) in ((10,28),(10,null),(20,null)));
10_28 10_null 20_null
270000 100000 90000
這個SQL查詢按照指定部門和經理的組合聚合後的工資。相當於按照兩個維度來做聚集。
兩個pivot,這時列數增加1倍。但是for() in()內容需要保持一致,否則Oracle無法確定你的列名,列的資料型別。
求各部門總工資和平均工資
select * from (select salary, department_id from employee) pivot(sum(salary) sumsal, avg(salary) avgsal for(department_id) in (10,20,30));
10_sum 10_avg 20_sum 20_avg 30_sum 30_avg
370000 74000 155000 77500 370000 185000
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/638844/viewspace-767874/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用Oracle 11g函式Pivot實現資料聚合行轉列Oracle函式
- Oracle 11g使用UNPIVOT函式實現“列轉行”Oracle函式
- Oracle 11g 新聚集函式listagg實現列轉行Oracle函式
- sql內建函式pivot強大的行轉列功能SQL函式
- Oracle行轉列函式Oracle函式
- Oracle行轉列的函式Oracle函式
- pivot、unpivot實現oracle行列轉換Oracle
- Oracle中pivot函式詳解Oracle函式
- sql的行轉列(PIVOT)與列轉行(UNPIVOT)SQL
- oracle 11g的行轉列、列轉行Oracle
- SQL 行轉列 PIVOT 學習示例SQL
- oracle 11g 使用 pivot/unpivot 行列轉換Oracle
- 用listagg函式分組實現列轉行函式
- Hive行轉列函式Hive函式
- 【函式】Oracle12c 列轉行函式使用listagg函式Oracle
- 列轉行聚合的簡單實現ORACLE WM_CONCAT LISTAGG函式Oracle函式
- 用ORACLE分析函式實現行列轉換Oracle函式
- oracle行轉列、列轉行、連續日期數字實現方式及mybatis下實現方式OracleMyBatis
- Spark實現行列轉換pivot和unpivotSpark
- Kettle實現行轉列
- sql實現行轉列SQL
- ORACLE單行函式與多行函式之五:轉換函式示例Oracle函式
- 分隔字串實現列轉行字串
- 虛擬函式實現原理(轉)函式
- JavaScript 中如何實現函式佇列?(一)JavaScript函式佇列
- oracle 列轉行Oracle
- oracle列轉行Oracle
- [Shell] awk 實現列轉行例子
- (函式)實現strstr函式函式
- oracle 分析函式(轉)Oracle函式
- Oracle分析函式{轉}Oracle函式
- oracle字串函式(轉)Oracle字串函式
- ORACLE函式大全(轉)Oracle函式
- Oracle字串函式--轉Oracle字串函式
- Oracle行列轉換及pivot子句的用法Oracle
- 使用rownum及replace實現行轉列
- 斐波那契數列三種實現函式函式
- oracle函式手冊(轉)Oracle函式