学校内100多个班级。
需要分组罗列出每个班级成绩前10名的编号、姓名、成绩。源表:Students
结构:Department,ID,Name,Sex,Score(二年级一班,002014,赵一,男,84)所求结果表和源表结构相同。

解决方案 »

  1.   

    select *
    from Students a
    where Id in (select top 10 id 
                 from Students
                 where Department = a.Department
                 order by Score desc)
      

  2.   

    OrSelect * from Students A 
    Where Not Exists(Select * from Students Where Department=A.Department And Score>A.Score Having Count(*)>9)
      

  3.   

    -- 下面的语句适用于 sql 2005SELECT *
    FROM(
    SELECT *, rowid = ROW_NUMBER() OVER(PARTITION BY 班级 ORDER BY 成绩 desc)
    FROM Students 
    )a
    WHERE rowid <= 10
      

  4.   

    搞定鸟。
    偶为什么都没有往排序的方向去想。Thank 上面的三位大人。
    另外:RowID真是好用。可是Sql2000不敢去升级了。