oracle行列转换
第一种是利用的decode,很普通的一种写法: select sname,sum(decode(course,'语文',score,0)) "语文",'数学',0)) "数学",'英语',0)) "英语" from score group by sname; 第二种是利用oracle的一种函数pivot,是列转行。还有一个unpivot,是行转列 select * from (select sname,course,score from score) pivot( sum(score) for course in( '语文' as "语文", '数学' as "数学", '英语' as "英语")) order by sname; 数据源: SNAME COURSE SCORE ------------------- Bill 语文 80 Bill 数学 90 Bill 英语 92 Jim 语文 78 Jim 数学 88 Jim 英语 98 两种方式结果对比: SNAME 语文 数学 英语 ------------------------------ Bill 80 90 92 Jim 78 88 98
SNAME 语文 数学 英语 ------------------------------- Bill 80 90 92 Jim 78 88 98 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |