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(第一列,第二列,第三列));
轉換后結果圖:

