适合2005及以上版本:
declare @page_size int;
declare @page_num int;--比如:每页10条记录
set @page_size = 10;--比如:先取第1页
set @page_num = 1;select *
from
(
select *,   
       
       (row_number() over(order by @@servername) - 1) / @page_size as pagenum
from from biao
)t
where pagenum = @page_num - 1

解决方案 »

  1.   

    ;with TT
    (
    select * ,row_number()over(partition by 分组列 order by getdate()) as num
    from TB)select * from TT where num between 10 and 20 and ...lz的一些条件
      

  2.   

    晕,先简单点不带条件用你的这个with TT //这个TT是干嘛的?
    (
    select * ,row_number()over(partition by pid order by getdate()) as num
    from Project
    //partition by pid 又 order by getdate()这是干嘛的?

    select * from TT where num between 10 and 20select * from TT where num between 10 and 20 这最后一句看懂了可这俩一起运行就报错
      

  3.   


    with TT
    (
    select * ,row_number()over(partition by pname order by getdate()) as num
    from Project

    select * from TT where num between 10 and 20我在语句中间加了个分号,还是报错
      

  4.   

    try this,with TT as
    (select *,
            row_number() over(partition by pname order by getdate()) 'num'
     from Project) 
    select * 
     from TT 
     where num between 10 and 20
      

  5.   

    不报错,但是一个数据都没查到啊?那个partition by pname 的'pname' 是指随便一个列吗?谢谢with TT as
    (select *,
            row_number() over(partition by pname order by getdate()) 'num'
     from Project) 
    select * from TT where num between 10 and 20
      

  6.   

    我把
    where num between 10 and 20
    去掉发现num全都等于1!,这是什么情况
      

  7.   

    partition by pname
    干嘛要用到这个呢?
      

  8.   


    这个主要是row_number函数必须要用order by,所以这里用服务器名称来排序,其实只是为了符合语法而言,没有实际意义