xuanyuanvista

 

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编辑  收藏  举报

导航