SQL Server使用where子句获取下一个x行数

时间:2018-12-10 05:49:43

标签: sql-server fetch offset

Microsoft SQL Server 2008 R2

我正在运行一个大型SQL选择查询,可能要花几个小时才能完成。因此,我尝试将查询结果分成较小的集合。

例如,首先返回结果1-10,000,然后返回10,001-20000,依此类推

我使用了下面的代码,但这给了我错误

SELECT * 
FROM PP_ConsolidatedSalesView
WHERE financial_period = '2018-11'
ORDER BY id
OFFSET 10000 ROWS
FETCH NEXT 10000 ROWS ONLY

我使用循环来动态更改偏移量并获取下一个值。

错误消息是:

  

“ OFFSET”附近的语法不正确

有人知道为什么吗?还有替代解决方案吗?

1 个答案:

答案 0 :(得分:1)

能否请您确认数据库的兼容性级别。 SQL Server 2012中存在偏移量。如果数据库为2008兼容模式,则关键字is not available。

您可以按如下所示进行检查:

USE AdventureWorks2012;  
 GO  

 SELECT compatibility_level  
 FROM sys.databases WHERE name = 'AdventureWorks2012';  
 GO

此处有更多信息:Incorrect syntax near OFFSET command