在工作查询中实现分页

时间:2014-09-11 12:22:08

标签: sql sql-server pagination

我正在连接到SQL SERVER 2012上有3个链接服务器。我使用预先制作的查询来获取数据,但是提出查询的人没有实现我需要的分页,所以我试图推动这个特色。需要注意的一点是,我不知道链接服务器的版本。它可能是第一次使用链接服务器,所以我不熟悉它们的工作方式但是因为在我的机器上我有2012版本我尝试使用OFFSETFETCH但是得到了无效令牌的错误。然后我被建议尝试在我的本地SQL SERVER 2008R2上运行的语法,但我也不能这样做,在这里。首先是正在运行的代码:

select *
from openquery(linkedServer,
'
select 
  ORG.Id as ID,  
  ORG.FirstName AS "FirstName",
  ORG.LastName as LastName

from YMFK.LK99Z ORG 

left outer join YMFK.LK88Z Phone
  ON ORG.Number = Phone.Number
    AND Phone.Col = ''something'' AND Phone.Col = ''else''
inner join YMFK.L77Z ORL
    ON ORG.Id = ORL.Id 
where 
ORG.FirsName  like ''%Peter%'''
)

对于修改过的名字很抱歉,但逻辑仍然保持不变,所以我认为这不是问题。

然后我尝试添加这样的分页:

from  (SELECT tbl.*, ROW_NUMBER() OVER(ORDER BY ID) AS
       rownum FROM YMFK.LK99Z as tbl WHERE ORG.FirstName  like ''%Peter%'' ) ORG
       WHERE ORG.rownum BETWEEN 1 AND 10

我将其放在from YMFK.LK99Z ORG的位置并删除where ORG.FirsName like ''%Peter%'''。这段代码是我试图形成一个工作分页查询尽可能少地修改它,但第一个(原始)查询工作,第二个(修改)查询给我错误

Column qualifier or table ORG undefined.".

1 个答案:

答案 0 :(得分:1)

你的代码中的

from  (SELECT tbl.*, ROW_NUMBER() OVER(ORDER BY ID) AS
       rownum FROM YMFK.LK99Z as tbl WHERE ORG.FirstName  like ''%Peter%'' ) ORG
       WHERE ORG.rownum BETWEEN 1 AND 10

别名ORG在内部范围之外定义 尝试以下方法:

from  (SELECT tbl.*, ROW_NUMBER() OVER(ORDER BY ID) AS
       rownum FROM YMFK.LK99Z as tbl WHERE tbl.FirstName  like ''%Peter%'' ) ORG
       WHERE ORG.rownum BETWEEN 1 AND 10