天天看點

oracle行轉列與列轉行

一、行轉列

  在有些應用場景中,如學生成績。學生所有科目的成績都儲存到一張表裡面,當我們需要以清單的形式顯示出學生所對應的每一科目的成績的時候,需要使用到行轉列。

  示例

  行轉列語句

  因為這裡使用到了 group by t.name,是以對于要展示score隻能使用聚合函數(sum,max,min)都可以,如果不使用聚合函數就會報錯。

  執行結果如下:

  

oracle行轉列與列轉行

二、列轉行

  與行轉列相反,有些場景剛好需要這種操作。

  示例如下: 

   列傳行語句

  結果如下:

oracle行轉列與列轉行

  也可以使用insert all .. into完成。使用insert all ..。 into 需要建立一個表用來儲存轉換後的資料。

  表結構如下:

  執行語句如下:

  結果查詢與上面截圖一緻。