第1个回答 2010-02-03
举例:
表[ClassInfo]:[ClassID],[StuID],[Score]
SQL如下:(每个班成绩前十名学生)
select a.*
from [ClassInfo] a
where (select count(*) from [ClassInfo] b on b.[ClassID]=a.[ClassID] and b.[Score]>a.[Score])<10
order by a.[ClassID] desc,a.[Score] desc
如果是学生信息表和学生成绩表用得是2个实体表,那就用连接查询,这里就不举例了。
明白?
第2个回答 2010-02-04
需要新建表然后用存储过程将前十名插入到新表
tTemp(class studentid)
create procedure a as
begin
delcare @strclassname char(50)
delete tTemp清空临时表
declare cc cursor for select distinct classname from ta(你的表)
open cc
fetch next from cc into @strclassname
while(@@FETCHSTATUS=0)
begin
select top 10 classname,studentid from ta where classname=@strclassname order by score desc into tTemp分别查出每个班的前十名插入到临时表
fetch next from cc into @strclassname
end
close cc
deallocate cc
end
以上是存储过程
select * from tTemp
查出所有班的前十名本回答被提问者采纳
第3个回答 2010-02-03
SELECT TOP 10 * FROM 表名 WHERE 条件 ORDER BY 成绩 DESC
第4个回答 2010-02-03
selet top 10 * from 学生表 order by 成绩 desc