Неверный синтаксис рядом с командой OFFSET
почему это не работает и дает мне ошибку "неправильный синтаксис рядом с командой смещения"
SELECT o.orderdate, o.orderid, o.empid, o.custid FROM Sales.Orders o
ORDER BY o.orderdate, o.orderid
OFFSET 50 ROWS
FETCH NEXT 25 ROWS ONLY;
Я использую SQL Server Express 2014
1 ответов
проверьте уровень совместимости базы данных.
OFFSET
был добавлен в SQL Server 2012, поэтому, если ваша база данных находится в режиме совместимости 2008, это ключевое слово недоступно.
просмотр или изменение уровня совместимости базы данных
в T-SQL вы можете проверить это следующим образом:
USE AdventureWorks2012;
GO
SELECT compatibility_level
FROM sys.databases WHERE name = 'AdventureWorks2012';
GO
вот список уровней совместимости, взятых из как проверить совместимость базы данных SQL Server после sp_dbcmptlevel нерекомендуемый?:
65 - SQL Server 6.5
70 - SQL Server 7.0
80 - SQL Server 2000
90 - SQL Server 2005
100 - SQL Server 2008/R2
110 - SQL Server 2012
120 - SQL Server 2014
130 - SQL Server 2016
140 - SQL Server 2017
кроме того, хранилище данных SQL Azure и параллельное хранилище данных не поддерживают OFFSET
статья, Как видно из документов ORDER BY
статья:
-- Syntax for SQL Server and Azure SQL Database ORDER BY order_by_expression [ COLLATE collation_name ] [ ASC | DESC ] [ ,...n ] [ <offset_fetch> ] <offset_fetch> ::= { OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS } [ FETCH { FIRST | NEXT } {integer_constant | fetch_row_count_expression } { ROW | ROWS } ONLY ] }
-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse [ ORDER BY { order_by_expression [ ASC | DESC ] } [ ,...n ] ]