Oracle行轉列,pivot函數和unpivot函數


pivot函數:行轉列函數:
  語法:pivot(任一聚合函數 for 需專列的值所在列名 in (需轉為列名的值));
unpivot函數:列轉行函數:
  語法:unpivot(新增值所在列的列名 for 新增列轉為行后所在列的列名 in (需轉為行的列名));
執行原理:將pivot函數或unpivot函數接在查詢結果集的后面。相當於對結果集進行處理。

 

轉換示例:

1.原始表數據:
  sql語句:select * from T_PIVOT_TEST_1 ;

    

2.用pivot函數進行行轉列。其中用聚合函數對數據列進行求值,將th列中的值’COL_1‘,’COL_2‘,‘COL_3’轉化為列名,並為其加上別名。
  sql語句:select * from T_PIVOT_TEST_1
    pivot (sum(er) for th in ('COL_1' as 第一列,'COL_2'as 第二列 ,'COL_3' as 第三列));
轉換后結果圖:

    

 

3.用nupivot函數進行列轉行。在原sql語句上再加上unpivot函數,將列再轉為行,在unpivot函數中,aa與bb為新增的列名,分別表示由列轉換為行后的數據所在的列名和數據所在的列名。
sql語句:select * from T_PIVOT_TEST_1
pivot (sum(er) for th in ('COL_1' as 第一列,'COL_2'as 第二列 ,'COL_3' as 第三列))
unpivot ( aa for bb in(第一列,第二列,第三列));
轉換后結果圖:

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM