表A、表B完全相同,表A中存学生成绩,如:
表A
ID 学生姓名 课程名称 分数 其它
ID Sname Cname Score Other
1 张三 语文 88 .
2 张三 数学 97 .
3 张三 数学 98 .
4 李四 语文 84 .
5 李四 语文 88 .
现在要将表A中数据插入表B,要过滤掉一些重复的数据,如张三的数学成绩和李四的语文成功有一条重复数据,只保留分数最高的那一条,ID列为主键自增。过滤后表B的数据为:
表B
ID 学生姓名 课程名称 分数 其它
ID Sname Cname Score Other
1 张三 语文 88 .
2 张三 数学 98 .
3 李四 语文 88 .
表A
ID 学生姓名 课程名称 分数 其它
ID Sname Cname Score Other
1 张三 语文 88 .
2 张三 数学 97 .
3 张三 数学 98 .
4 李四 语文 84 .
5 李四 语文 88 .
现在要将表A中数据插入表B,要过滤掉一些重复的数据,如张三的数学成绩和李四的语文成功有一条重复数据,只保留分数最高的那一条,ID列为主键自增。过滤后表B的数据为:
表B
ID 学生姓名 课程名称 分数 其它
ID Sname Cname Score Other
1 张三 语文 88 .
2 张三 数学 98 .
3 李四 语文 88 .
as
(select 1, '张三','语文',88,'2010-01-01','' union all
select 2, '张三','数学',97,'2010-01-01','' union all
select 3,'张三', '数学',98,'2010-01-01','' union all
select 4,'李四', '语文',84,'2010-01-01','' union all
select 5, '李四', '语文', 88,'2010-01-01',''
)
select * from tb tb1 where tb1.Score=
(select max(Score) from tb tb2 where tb2.Sname=tb1.Sname and tb1.Cname=tb2.Cname)
drop table tb
create table tb (id varchar(20),sname varchar(20),cname varchar(20),score varchar(20),other varchar(20))
insert into tb
select '1','张三','语文','88','' union all
select '2','张三','数学','97','' union all
select '3','张三','数学','98','' union all
select '4','李四','语文','84','' union all
select '5','李四', '语文', '88',''drop table #1
select sname,cname,max(score)as score ,id=identity(int,1,1) into #1 from tb
group by sname,cname order by sname desc,score
select * from #1