行转列问题,求高手!
我有这样一个表,表字段如下:
grade_id(年级) class_id(班级) stu_name(姓名) course(科目) score(成绩)
现不知有多少个科目(不定),可能一个学生有4个,可能另一个学生有6个,
怎样转成:
grade_id(年级)class_id(班级)stu_name(姓名)course1(科目1)score1(成绩1)course2(科目2)score2(成绩2)...
的形式
------解决方案--------------------每个学生有多少科目不知道没有关系,总共有多少科目是一定要知道的,否则没法做。
比如有语文,数学,英语三门。
select grade_id,class_id,stu_name,
max(decode(course, '语文', score, 0)) as 语文成绩,
max(decode(course, '数学', score, 0)) as 数学成绩,
max(decode(course, '英语', score, 0)) as 英语成绩,
from your_table group by grade_id,class_id,stu_name order by 1,2,3;
------解决方案--------------------每个学生有多少科目不知道没有关系,总共有多少科目是一定要知道的,否则没法做。
比如有语文,数学,英语三门。
select grade_id,class_id,stu_name,
max(decode(course, '语文', score, 0)) as 语文成绩,
max(decode(course, '数学', score, 0)) as 数学成绩,
max(decode(course, '英语', score, 0)) as 英语成绩
from your_table group by grade_id,class_id,stu_name order by 1,2,3;
------解决方案--------------------就是不知道科目
------解决方案--------------------百度 oracle动态行转列吧 记得有很多帖子都问过
------解决方案-------------------- 这种 搜下就是 http://topic.csdn.net/u/20100109/13/6A10C168-F190-4766-B838-ADBF03C4AC7B.html
动态的无非就是要 拼接下sql。