Произошла ошибка при разборе запроса. [Номер строки токена = 1, смещение строки токена = 39, ошибка токена = ( ]
Я работаю в приложении WinForms. Моё требование - загружать данные из sql по требованию (т.е. загружать 100 записей для страницы при переходе на эту страницу). Поэтому я попробовал ниже SqlCommand, но он выдает исключение вместо синтаксиса "ROW_NUMBER()" в приведенной ниже команде,
SELECT *
FROM (SELECT *
, ROW_NUMBER() (ORDER BY [ID]) AS RowNum
FROM [tblVGTest]
WHERE [ID]) AS Temp
WHERE RowNum BETWEEN 0 AND 100
Пожалуйста, дайте мне знать, есть ли какие-либо ошибки в команде или предоставить какие-либо предложения для моего сценария.
Спасибо
2 ответа
Вы забыли использовать OVER()
пункт с ROW_NUMBER
,
Попробуйте следующий запрос.
SELECT * FROM (SELECT * , ROW_NUMBER() OVER (ORDER BY [ID]) AS RowNum
FROM [tblVGTest] ) AS Temp WHERE RowNum BETWEEN 0 AND 100
Я удалил WHERE
пункт из этого, поскольку у него не было никаких критериев. Вы можете поставить, если это требуется для вас.
Если вы используете SQL Server Compact 4.0, вы можете использовать синтаксис OFFSET / FECTCH:
SELECT * FROM TransactionHistory
ORDER BY TransactionDate DESC
OFFSET 0 ROWS FETCH NEXT 100 ROWS ONLY;