有一个学生信息表。包含信息有(学号,班级,姓名,性别,语文老师,数学老师,英语老师) Oracle

现在表里面有重复数据或为空数据。比如:
(201,02,张三,女,林语,null,null)
(201,02,张三,女,null,林数,null)
(201,02,张三,女,null,null,林英)
(202,02,李四,男,林语,null,null)
(202,02,李四,男,null,null,林英)
(506,05,王五,男,杨语,null,null)
(506,05,王五,男,null,杨数,null)

(506,05,王五,男,null,null,杨英)

等等。
这里有部分数据是重复的。如何将这些语句进行合并?变成
(201,02,张三,女,林语,林数,林英)
(202,02,李四,男,林语,null,林英)
(506,05,王五,男,杨语,杨数,杨英)
想着用union来着,可是不行,求各位帮忙哈,不胜感激。Oracle中sql查询。
希望有具体查询语句,O(∩_∩)O谢谢

create table stu_info (
stu_id number(10),
stu_grade number(2),
stu_name varchar2(100),
stu_sex varchar2(10),
a_teacher varchar2(100),
b_teacher varchar2(100),
c_teacher varchar2(100) )
select * from stu_info
--
select distinct a.stu_id,a.stu_grade,a.stu_name,a.stu_sex,
nvl(a.a_teacher,nvl(b.a_teacher,c.a_teacher)) aaa,
nvl(a.b_teacher,nvl(b.b_teacher,c.b_teacher)) bbb,
nvl(a.c_teacher,nvl(b.c_teacher,c.c_teacher)) ccc
from stu_info a, stu_info b, stu_info c
where a.stu_id=b.stu_id
and a.stu_id=c.stu_id

里面有完整的数据,有多余的数据目前还没有去掉,请参考
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-16
先假设一下你的表的列名:
column1,... column7

(201,02,张三,女,林语,null,null),

表名为:tableName

语句为:
select column1,column2,column3, column4, max(column5) as column5,max(column6) as column 6,max(column7) as column7 from tableName group by column1, column2, column3,column4

Ok ,完工,本回答被网友采纳
第2个回答  2012-07-16
每一条数据中的后面三个字段中一定只有一个有值其他两个为null吗
第3个回答  2012-07-15
可将该表与自身做笛卡尔积,并设置前两个字段为主码即可。
第4个回答  2012-07-19
(201,02,张三,女,林语,林数,林英)
(202,02,李四,男,林语,null,林英)
(506,05,王五,男,杨语,杨数,杨英)
第5个回答  2012-07-15
不那么简单,得想想
相似回答