SQL Server(2008)で次のクエリを送信しています
WITH query AS (SELECT TOP 100 PERCENT
ROW_NUMBER() OVER
(ORDER BY [tbl2].[col2] ASC) AS TableRowNumber ,
[tbl1].[col1] ,
[tbl2].[col2]
FROM [db1].[dbo].[tbl1] AS [tbl1]
JOIN [db2].[dbo].[tbl2] AS [tbl2]
ON [tbl1].[id] = [tbl2].[id])
SELECT
*
FROM query
WHERE TableRowNumber BETWEEN 1 AND 15
ORDER BY TableRowNumber ASC
このクエリを実行すると、次のエラーメッセージが返されます。
Msg 207, Level 16, State 1, Line 3
Invalid column name 'col2'.
SQL結合自体は正常に実行されます(通常のクエリとして実行する場合。問題は、クエリのテーブルとは異なるデータベースにあるRow_Number() over (Order By COLUMN)
whenを使用することにあるようです。COLUMN
FROM
3行目を読むように変更すると(Order By [tbl1].[col1] ASC)
、問題なく実行されます。このエラーは、ソート列が別のDBにある場合にのみ発生します。
なぜこれが起こっているのか誰かが知っていますか?これを修正する方法について何か提案はありますか?