在oracle中,可以利用unpivot()函數將縱表轉為橫表,該函數用于將把一行當中的列的字段按照行的唯一值轉換成多行數據,語法為“select 字段 from 數據集 unpivot(列的值 for 自定義列名 in(列名))”。
本教程操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。
oracle縱表怎么轉橫表
Oracle列轉行就是把一行當中的列的字段按照行的唯一值轉換成多行數據。?
學生成績表的基礎數據是一個學生的一個科目成績對應著是一條記錄。然后我們進行了行轉列后變成一個學生對應著每列(數學、英語、語文)科目的成績是一條記錄。那么本文就是要把之前轉換后的學生成績表(備份表score_copy)再次進行列轉行,轉換為原始數據。案例數據如下:
那我們要如何實現列轉行呢?下面介紹兩種常用的方法:
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
結果如下:
2、利用Oracle自帶的列轉行函數unpivot也可以完美解決該問題,具體語法結構如下:
select?字段?from?數據集 unpivot(自定義列名/*列的值*/?for?自定義列名?in(列名))
? ? 實現代碼如下:
select?stuname,?coursename?,score?from score_copy??t unpivot (score?for?coursename?in?(英語,數學,語文))
? ? 結果如下:
推薦教程:《Oracle視頻教程》
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦