课程号 学号 学期 重补修说明 课程性质 成绩
430116 200811401 2007-2008-2 必修 0
430116 200811401 2007-2008-2 必修 0
110016 200811401 2008-2009-1 重修 必修 0
110016 200811401 2007-2008-2 必修 0
210001 200811401 2007-2008-2 补考 必修 69
810005 200811401 2007-2008-2 专业选修 0
400132 200811401 2008-2009-1 必修 75
430089 200811401 2008-2009-1 公共选修 60
如上面所示,相同课程号 相同考试成绩取一条记录,如 1 根2,重补修不为空的,取重补修不为空的记录。如3根4
上面的数据筛选之后如下所示
课程号 学号 学期 重补修说明 课程性质 成绩
430116 200811401 2007-2008-2 必修 0
110016 200811401 2008-2009-1 重修 必修 0
210001 200811401 2007-2008-2 补考 必修 69
810005 200811401 2007-2008-2 专业选修 0
400132 200811401 2008-2009-1 必修 75
430089 200811401 2008-2009-1 公共选修 60
就是去掉相同课程号,相同数据的重复的记录。
请教sql语句的写法。
430116 200811401 2007-2008-2 必修 0
430116 200811401 2007-2008-2 必修 0
110016 200811401 2008-2009-1 重修 必修 0
110016 200811401 2007-2008-2 必修 0
210001 200811401 2007-2008-2 补考 必修 69
810005 200811401 2007-2008-2 专业选修 0
400132 200811401 2008-2009-1 必修 75
430089 200811401 2008-2009-1 公共选修 60
如上面所示,相同课程号 相同考试成绩取一条记录,如 1 根2,重补修不为空的,取重补修不为空的记录。如3根4
上面的数据筛选之后如下所示
课程号 学号 学期 重补修说明 课程性质 成绩
430116 200811401 2007-2008-2 必修 0
110016 200811401 2008-2009-1 重修 必修 0
210001 200811401 2007-2008-2 补考 必修 69
810005 200811401 2007-2008-2 专业选修 0
400132 200811401 2008-2009-1 必修 75
430089 200811401 2008-2009-1 公共选修 60
就是去掉相同课程号,相同数据的重复的记录。
请教sql语句的写法。
from
(select t.*,row_number() over(partition by 课程号,学号 order by 课程号,学号) rn from tb)
where rn=1
from
(select 课程号,学号,学期,重补修说明,课程性质,成绩,row_number() over(partition by 课程号,学号
order by 重补修说明) rn from tb)
where rn=1
(
select t.* , row_number() over(partition by 课程号 , 学号 order by 课程号 , 学号 , 课程性质 desc) px from tb t
) m
where px = 1