我正在连接到SQL SERVER 2012
上有3个链接服务器。我使用预先制作的查询来获取数据,但是提出查询的人没有实现我需要的分页,所以我试图推动这个特色。需要注意的一点是,我不知道链接服务器的版本。它可能是第一次使用链接服务器,所以我不熟悉它们的工作方式但是因为在我的机器上我有2012版本我尝试使用OFFSET
和FETCH
但是得到了无效令牌的错误。然后我被建议尝试在我的本地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.".
答案 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