Что делать, если смещение не работает? - PullRequest
0 голосов
/ 20 сентября 2018

Пожалуйста, помогите мне, я думаю, что это в правильном синтаксисе.Но почему он предупреждает меня неправильно в SQL Server 2017

SELECT Request  
FROM TD_TD  
ORDER BY Request  
OFFSET 1 ROWS    
FETCH NEXT 20 ROWS ONLY  

1 Ответ

0 голосов
/ 20 сентября 2018

OFFSET синтаксис OFFSET {Rows} ROWS.вам не хватает ключевого слова * 1003.

Это не ваш SQL, так как это изображение, однако правильный синтаксис в псевдо-SQL будет (но я не следовал комментарию JohnyL иответ на картинке ?):

SELECT {Your Coloumns}
FROM YourTable YT
ORDER BY {Order Columns}
OFFSET @OffSetVar ROWS --You're missing ROWS
FETCH FIRST @FirstVar ROWS ONLY;
--Above could also be replaced with (they are semantically the same)
--FETCH NEXT @NextVAR ROWS ONLY;

В документации есть отличный пример: Задание выражений для значений OFFSET и FETCH

SQL, который вы используете в своем посте, делаетне генерировать ошибку:

CREATE TABLE #TD_TD(Request int);
INSERT INTO #TD_TD (Request)
VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),
       (11),(12),(13),(14),(15),(16),(17),(18),(19),(20),
       (21),(22),(23),(24),(25),(26),(27),(28),(29),(30);


SELECT Request  
FROM #TD_TD  
ORDER BY Request  
OFFSET 1 ROWS    
FETCH NEXT 20 ROWS ONLY;
GO

DROP TABLE #TD_TD;

Это возвращает значения 2 - 21

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...