2014-09-11 90 views
0

我連接到帶有3個鏈接服務器的SQL SERVER 2012。我使用預先製作的查詢來獲取數據,但是提出查詢的人沒有實現我將需要的分頁,所以我試圖推動這個功能。有一點需要注意的是,我不知道鏈接服務器的版本。這可能是第一次使用鏈接服務器,所以我不熟悉它們的工作方式,但由於在我的機器上,我有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%'''。這段代碼是什麼我就先形成工作分頁查詢modfying它儘量少,但第一(原)查詢工作,而第二(修改)查詢是給我的錯誤

Column qualifier or table ORG undefined.".

回答

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 
+0

我沒有立刻得到錯誤像以前一樣,但之後好像2-3secs我得到這個錯誤 - '功能不支持查詢「' – Leron 2014-09-11 12:47:23

+0

當您運行非常怎樣就怎樣。直接在遠程服務器上查詢相同的查詢? – Paolo 2014-09-11 12:51:05

+0

我正在遠程服務器上運行它們。現在我正在使用'Ms SQL Management studio'並直接執行每個查詢。 – Leron 2014-09-11 12:54:48