oracle行列轉置的方法:1、利用pivot()函數行轉列,語法為「pivot(聚合函數for 列名in(類型))」;2、利用unpivot()函數列轉行,語法為「unpivot(列名for 列名in(類型))」。
本教學操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。
以前接觸過通用SQL中的行列轉置,行轉列使用聚合函數sum | max 然後結合case when then else end 語句就可以實現,而列轉行使用union或union all來實作。這樣做其實有點麻煩,而在oracle資料中,專門提供了這樣的函數來實現行列轉置功能。
同樣可以使用通用SQL來實現行列轉置,但是Oracle提供了專門的函數來處理行列轉置,也就是使用pivot函數和unpivot函數,下面進行介紹。
1、pivot行轉列
oracle資料庫中提供pivot函數來實現行轉列的功能,同樣實現上面行轉列的效果,SQL也可以這樣寫:
SELECT NAME AS 姓名, "'语文'", "'数学'", "'英语'" FROM stu_score pivot ( max( score ) FOR SUBJECT IN ( '语文', '数学', '英语' ) );
查詢結果如下:
#2、unpivot列轉行
oracle中提供unpivot函數來實現列轉行功能,實現同樣的效果,SQL也可以這樣寫:
SELECT NAME AS 姓名, 月份,工资 FROM e_sal unpivot ( 工资 FOR 月份 IN ( M_1, M_2, M_3, M_4 ) );
查詢結果如下:
推薦教學:《Oracle視頻教程》
以上是oracle如何行列轉置的詳細內容。更多資訊請關注PHP中文網其他相關文章!