首頁  >  文章  >  資料庫  >  oracle如何行列轉置

oracle如何行列轉置

WBOY
WBOY原創
2022-01-25 10:55:555973瀏覽

oracle行列轉置的方法:1、利用pivot()函數行轉列,語法為「pivot(聚合函數for 列名in(類型))」;2、利用unpivot()函數列轉行,語法為「unpivot(列名for 列名in(類型))」。

oracle如何行列轉置

本教學操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。

oracle怎樣行列轉置

以前接觸過通用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 ( '语文', '数学', '英语' ) );

查詢結果如下:

oracle如何行列轉置
#2、unpivot列轉行

oracle中提供unpivot函數來實現列轉行功能,實現同樣的效果,SQL也可以這樣寫:

SELECT NAME AS
	姓名,
	月份,工资 
FROM
	e_sal unpivot ( 工资 FOR 月份 IN ( M_1, M_2, M_3, M_4 ) );

查詢結果如下:

oracle如何行列轉置

推薦教學:《Oracle視頻教程

以上是oracle如何行列轉置的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn