Произошла ошибка при разборе запроса. [Номер строки токена = 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;
Другие вопросы по тегам