在OFFSET-FETCH之前计算行数

时间:2013-08-06 12:28:45

标签: sql sql-server sql-server-2012

我有一个类似于以下SQL代码的存储过程:

SELECT col1, col2, col3 FROM table1
LEFT JOIN table2
ON table1.col1 = table2.colWhatever
OFFSET @var1 ROWS FETCH NEXT @var2 ROWS ONLY

RETURN @@ROWCOUNT

但是,我并不惊讶它返回的行数等于@ var2,但我想知道在将offset-fetch应用于请求之前我有多少行。

最干净,最有效的方式是什么?

1 个答案:

答案 0 :(得分:2)

您可以将COUNT(*) OVER()添加到SELECT列表中 - 您将获得总计数作为结果集中的附加列(为每行填充),但是您可以在首次打开时将其取出结果集并从那时起忽略它。

此外,请勿使用RETURN返回@@ROWCOUNT - 它是状态和错误代码,而不是数据。使用OUTPUT参数(但我认为你无论如何都不想要那个值,因为它会返回与你已经知道的@var2相同的东西。)