时间:2021-07-01 10:21:17 帮助过:29人阅读
转换过程如下:
CREATE TABLE RowToCol ( ID NUMBER(10) not null, USER_NAME VARCHAR2(20 CHAR), COURSE VARCHAR2(20 CHAR), SCORE VARCHAR2(20 CHAR) )
主要原理是利用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
------------------------------------------------------------------------------------------------------------------------------------------------------
附注:
它是一种特有的函数计算方式,相当于计算机语言中的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
行转列包括行转列、列转行、多列转换成字符串、多行转换成字符串、字符串转换成多行和字符串转换成多列六种情况,如果大家有兴趣,可以进行进一步的研究。
版权声明:本文为博主原创文章,未经博主允许不得转载。
Oracle 行转列小结
标签:plsql oracle 行转列