首頁 >資料庫 >Oracle >oracle縱表怎麼轉橫表

oracle縱表怎麼轉橫表

WBOY
WBOY原創
2022-05-24 17:29:027667瀏覽

在oracle中,可以利用unpivot()函數將縱表轉為橫表,該函數用於將把一行當中的列的字段按照行的唯一值轉換成多行數據,語法為“ select 欄位from 資料集unpivot(列的值for 自訂列名in(列名))」。

oracle縱表怎麼轉橫表

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

oracle縱表怎麼轉橫表

Oracle列轉行就是把一行當中的列的欄位依照行的唯一值轉換成多行資料。 

學生成績表的基礎資料是學生的一個科目成績對應著是一筆記錄。然後我們進行了行轉列後變成一個學生對應著每列(數學、英語、語文)科目的成績是一筆記錄。那麼本文就是要把之前轉換後的學生成績表(備份表score_copy)再次進行列轉行,轉換為原始資料。案例資料如下:

oracle縱表怎麼轉橫表

oracle縱表怎麼轉橫表

那我們要如何實作列轉行呢?以下介紹兩種常用的方法:

1、利用union all 進行拼接,可以完美的把對應的列轉為行記錄,具體程式碼如下:

select t.stuname, '英语' as coursename ,t.英语 as score  from SCORE_COPY t
union all
select t.stuname, '数学' as coursename ,t.数学 as score  from SCORE_COPY t
union all
select t.stuname, '语文' as coursename ,t.语文 as score  from SCORE_COPY t

結果如下:

oracle縱表怎麼轉橫表

2、利用Oracle自帶的列轉行函數unpivot也可以完美解決此問題,具體語法結構如下:

select 字段 from 数据集
unpivot(自定义列名/*列的值*/ for 自定义列名 in(列名))

    實作程式碼如下:

select stuname, coursename ,score from
score_copy  t
unpivot
(score for coursename in (英语,数学,语文))

    結果如下:

oracle縱表怎麼轉橫表

推薦教學:《Oracle影片教學

以上是oracle縱表怎麼轉橫表的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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