--第一页
select top 8 * from tb order by sort
--第二页
select top 8 * from tb 
where sort not in ( select top 8 sort from tb order by sort)
order by sort--第N页
select top 8 * from tb 
where sort not in ( select top 8*(N-1) sort from tb order by sort)
order by sort

解决方案 »

  1.   

    CREATE TABLE #TAB ( NAM VARCHAR(10) , SORT INT)
    INSERT INTO #TAB VALUES('王三' , 1)
    INSERT INTO #TAB VALUES('王三' , 2)
    INSERT INTO #TAB VALUES('王三' , 3)
    INSERT INTO #TAB VALUES('王三' , 5)
    INSERT INTO #TAB VALUES('王三' , 8)
    INSERT INTO #TAB VALUES('王三' , 9)
    INSERT INTO #TAB VALUES('王三' , 12)
    INSERT INTO #TAB VALUES('王三' , 24)
    INSERT INTO #TAB VALUES('王三' , 50)
    INSERT INTO #TAB VALUES('李四' , 25)
    INSERT INTO #TAB VALUES('李四' , 32)
    SELECT
    A.*,A.CNT%8 AS CNT1
    FROM
    (SELECT
      ROW_NUMBER() OVER(PARTITION BY NAM ORDER BY NAM,SORT) AS CNT,
      NAM,
      SORT
     FROM
      #TAB
    ) A
    ORDER BY A.NAM,A.SORT1 王三 1 1
    2 王三 2 2
    3 王三 3 3
    4 王三 5 4
    5 王三 8 5
    6 王三 9 6
    7 王三 12 7
    8 王三 24 0
    9 王三 50 1
    1 李四 25 1
    2 李四 32 2是不是這個意思
      

  2.   

    Rewiah(乘长风):忘记说一个问题了,我只是举了个2页的例子,如果有7-8页以上的,而且其中有三到四页是连着一个人备货的那在登记时只需要填起始页,结束页,备货员就可以了,如果按照你的方法将要进行一页一页的输入,有什么简便点的方法吗?
      

  3.   

    hamburger :有可能一张整单里面有7-8张分单,每张分单都可能由不同的人备货,不能按名字来排序
      

  4.   

    就是说,有可能张三来那了第一第二张单去备货,然后李四来拿了第三张,然后张三手快备货完了李四还没完,张三又来拿了第四张去备货,这种情况下按你的排序得出的sort就不是升序来排列的了,现在的要求是必须升序来排列,即使他们不连续也要升序排列
      

  5.   

    Rewiah(乘长风):select top 行数好象不支持乘法,我没用就正确,一用就错误,正确的写法是?