甲骨文行列转换

第一种是利用的解码,很普通的一种写法:

选择sname,总和(解码(当然,“语文”,得分,0))“语文”,总和(解码(当然,“数学”,得分,0))“数学”,总和(解码(当然,“英语”,得分,0))“英语”分数group by sname;


第二种是利用oracle的一种函数主,是列转行。还有一个透视,是行转列

select * from(选择sname,课程,成绩分数)

主(

,总和(分数)

,课程(

,,,“语文”为“语文”,

,,,的数学”为“数学”,

,,,的英语”为“英语”)

命令sname;


数据源:

sname课程,分数

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

比尔,语文,,80年

法案,数学,,90年

法案,英语,,92年

吉姆,语文,,78年

吉姆,数学,,88年

吉姆,英语,,98年

两种方式结果对比:

SNAME,语文,数学,英语

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

比尔,80年,,90年,92年,吉姆

,78年,,88年,98年,

,,,,,,,

,,,,,,,

SNAME,语文,数学,英语

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

法案,80年,,90年,,92年,吉姆

,78年,,88年,,98年,


甲骨文行列转换