DECLARE @pagenum AS INT,
 @pagesize AS INT,
@SQL  AS NVARCHAR(MAX),
@orderby AS NVARCHAR(100)
SET @pagenum = 2
SET @pagesize = 3
select 
(SELECT ROW_NUMBER() OVER(ORDER BY c.UserID DESC) AS rownum),
c.groupid,c.userid,c.title,u.firstname,u.lastname from contacts as c
inner join users u
on u.userid=u.userid
where rownum BETWEEN (@pagenum-1)*@pagesize+1 AND @pagenum*@pagesize这段SQL是报错的,Invalid column name 'rownum'.
请问,如果在动态生成的列上加查询条件呢? 请高手指教。马上结帖。

解决方案 »

  1.   

    这样试试:select 
    (SELECT ROW_NUMBER() OVER(ORDER BY c.UserID DESC) AS rownum) as rownum,
    c.groupid,c.userid,c.title,u.firstname,u.lastname from contacts as c
    inner join users u
    on u.userid=u.userid
    where rownum BETWEEN (@pagenum-1)*@pagesize+1 AND @pagenum*@pagesize
      

  2.   

    最笨的办法是
    select *
    from (
    select 
    (SELECT ROW_NUMBER() OVER(ORDER BY c.UserID DESC)) AS rownum,
    c.groupid,c.userid,c.title,u.firstname,u.lastname from contacts as c
    inner join users u
    on u.userid=u.userid
    ) _x 
    where _x.rownum BETWEEN (@pagenum-1)*@pagesize+1 AND @pagenum*@pagesize
      

  3.   

    --tryDECLARE @pagenum AS INT,
    @pagesize AS INT,
    @SQL  AS NVARCHAR(MAX),
    @orderby AS NVARCHAR(100)SET @pagenum = 2
    SET @pagesize = 3select 
    rownum=(SELECT ROW_NUMBER() OVER(ORDER BY c.UserID DESC)), 
    c.groupid,c.userid,c.title,u.firstname,u.lastname 
    from contacts as c
    inner join users u on c.userid=u.userid
    where rownum BETWEEN (@pagenum-1)*@pagesize+1 AND @pagenum*@pagesize
      

  4.   

    谢谢各位兄弟,mengmou()mengmou() 的办法是可行的。其他的小弟试过,不行。本来要结帖的,但报故障,所以等一下再结。不过先谢谢各位。
      

  5.   


    DECLARE @pagenum AS INT,
    @pagesize AS INT,
    @SQL  AS NVARCHAR(MAX),
    @orderby AS NVARCHAR(100)SET @pagenum = 2
    SET @pagesize = 3select * from (select 
    rownum=(SELECT ROW_NUMBER() OVER(ORDER BY c.UserID DESC)), 
    c.groupid,c.userid,c.title,u.firstname,u.lastname 
    from contacts  a
    inner join users u on a.userid=u.userid)b
    where b.rownum BETWEEN (@pagenum-1)*@pagesize+1 AND @pagenum*@pagesize