看你的截图,应该是2005或者以上版本,可以用下面代码,对最外层的*号处理一下就可以了。比如把oid在最外层不显示,或者选择你需要的列SELECT  *
FROM    ( SELECT    * ,
                    ROW_NUMBER() OVER ( ORDER BY score_suDESCsc ) oid
          FROM      TB
        ) a
WHERE   oid BETWEEN 5 AND 10

解决方案 »

  1.   

    select * from a where Score_sum 
    not in (select top 4 Score_sum from a order by Score_sum desc) 
    order by Score_sum desc
      

  2.   


    取n到m行1. 
    select top (n-m+1) * from tablename where id not in (select top n id from tablename order by id asc/*|desc*/) 2. 
    select top m * into 临时表(或表变量) from tablename order by columnname -- 将top m笔插入到临时表 
    set rowcount n   --只取n条结果
    select * from 表变量 order by columnname desc 3. 
    select top n * from  
    (select top m * from tablename order by columnname) a 
    order by columnname desc 
    4.如果tablename里没有其他identity列,那么: 
    先生成一个序列,存储在一临时表中.
    select identity(int) id0,* into #temp from tablename 取n到m条的语句为: 
    select * from #temp where id0 > =n and id0  <= m 如果你在执行select identity(int) id0,* into #temp from tablename这条语句的时候报错,那是因为你的DB中间的select into/bulkcopy属性没有打开要先执行: 
    exec sp_dboption 你的DB名字,'select into/bulkcopy',true 
    5.如果表里有identity属性,那么简单: 
    select * from tablename where identity_col between n and m  6.SQL2005开始.可以使用row_number() over()生成行号
    ;with cte as
    (
     select id0=row_number() over(order by id),* from tablename
    )
    select * from cte where id0 between n to m方法太多了啊
      

  3.   

    if OBJECT_ID('tt') is not null drop table tt
    create table tt(Std_id int,Score_Date datetime,Chinese float,Math float,Score_sum float)
    insert into tt values (1,GETDATE(),1,2,3)
    insert into tt values (2,GETDATE(),2,3,5)
    insert into tt values (3,GETDATE(),3,4,7)
    insert into tt values (4,GETDATE(),4,5,9)
    insert into tt values (5,GETDATE(),5,6,11)
    insert into tt values (6,GETDATE(),6,7,13)
    insert into tt values (7,GETDATE(),8,9,17)
    insert into tt values (8,GETDATE(),9,10,19)
    insert into tt values (9,GETDATE(),10,11,21)
    insert into tt values (10,GETDATE(),11,12,23)
    insert into tt values (11,GETDATE(),12,13,25)
    insert into tt values (12,GETDATE(),13,14,27)select * from tt
    --取得5-10的数据
    select * from (select *,ROW_NUMBER() over(order by Score_sum desc) as row  from tt) as tts  where tts.row >= 5 and tts.row<= 10 楼上各位大神写的都很好,个人练手写了一下算是一个记录。希望能帮助到你~