Oracle 行轉列小結,oracle轉列小結

來源:互聯網
上載者:User

Oracle 行轉列小結,oracle轉列小結

      最近在工作中,對行轉列進行了應用,在此做一個簡單的小結。


      轉換過程如下:

        1、建立表結構

CREATE TABLE RowToCol (   ID NUMBER(10) not null,   USER_NAME VARCHAR2(20 CHAR),   COURSE VARCHAR2(20 CHAR),   SCORE VARCHAR2(20 CHAR)) 

        2、插入測試資料(未經處理資料)

        



        3、行轉列實現效果

        


        4、具體實現

        主要原理是利用decode函數、聚集合函式(sum/max/min/avg),結合group by分組實現的,具體sql如下:


select t.user_name as 姓名,    MAX(decode(t.course,'語文',score,null)) as 語文,    MAX(decode(t.course,'數學',score,null)) as 數學,    MAX(decode(t.course,'英語',score,null)) as 英語from RowToCol t group by t.user_name  order by t.user_name


      
      *當要分組的值,如例子中的score列是數值型,則聚集合函式可以使用sum/max/min/avg,但是字元行的只能使用max/min。




------------------------------------------------------------------------------------------------------------------------------------------------------


      附註:

      decode函數:

      它是一種特有的Function Compute方式,相當於電腦語言中的if...else...

       decode(條件,值1,翻譯值1,值2,翻譯值2,...值n,翻譯值n,預設值)

      其理解為:

       

if (條件==值1) then    return(翻譯值1)elsif (條件==值2)then    return(翻譯值2)    ......elsif (條件==值n) then    return(翻譯值n)else    return(預設值)end if


      行轉列包括行轉列、列轉行、多列轉換成字串、多行轉換成字串、字串轉換成多行和字串轉換成多列六種情況,如果大家有興趣,可以進行進一步的研究。

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.