oracle表行列转换实验
1.首先先建一张测试表
CREATE TABLE student ("STUDENT" VARCHAR2(10) NOT NULL,
"SUBJECT" VARCHAR2(10) NOT NULL, "GRADE" NUMBER(10) NOT
NULL);
2.向表中插几条记录
INSERT INTO STUDENT ("STUDENT" ,"SUBJECT" ,"GRADE" ) VALUES ('tom' ,'语文' ,88 );
INSERT INTO STUDENT ("STUDENT" ,"SUBJECT" ,"GRADE" ) VALUES ('tom' ,'数学' ,66 );
INSERT INTO STUDENT ("STUDENT" ,"SUBJECT" ,"GRADE" ) VALUES ('tom' ,'英语' ,63 );
INSERT INTO STUDENT ("STUDENT" ,"SUBJECT" ,"GRADE" ) VALUES ('jerry' ,'语文' ,70 );
INSERT INTO STUDENT ("STUDENT" ,"SUBJECT" ,"GRADE" ) VALUES ('jerry' ,'数学' ,83 );
INSERT INTO STUDENT ("STUDENT" ,"SUBJECT" ,"GRADE" ) VALUES ('jerry' ,'英语' ,90 );
commit;
查看一下数据:
select * from student;
STUDENT SUBJECT GRADE
-------------------- -------------------- ----------
tom 语文 88
tom 数学 66
tom 英语 63
jerry 语文 70
jerry 数学 83
jerry 英语 90
已选择6行。
3.用decode函数实现行列的转换
select student,sum(decode(subject,'语文', grade,null)) "语文",
sum(decode(subject,'数学', grade,null)) "数学",
sum(decode(subject,'英语', grade,null)) "英语"
from student
group by student;
STUDENT 语文 数学 英语
-------------------- ---------- ---------- ----------
tom 88 66 63
jerry 70 83 90
成功转换,使得数据更清晰地展示出来!
posted on 2009-08-25 14:53 xuanyuanvista 阅读(276) 评论(0) 编辑 收藏 举报