目標は簡単です: 合計行数といくつかのデータ ページを取得します。
OFFSET...FETCH アプローチを使用して総行カウントでページングを実装すると、次の問題が発生します。大きなページ番号を渡すと(たとえば、100 行しかないのに、1 ページあたり 10 レコードで 15 番目を要求した場合) COUNT(*)結果セットが空であるため、OVER() ステートメントが呼び出されていません。したがって、この場合、正しい合計行数を取得できません。
大きなページ番号が渡された場合でも、OFFSET ... FETCHアプローチを使用して正しい合計行数を取得する方法はありますか?
参考までに、OFFSET ... FETCHアプローチは次のとおりです。
SELECT
...
Total = COUNT(*) OVER()
FROM Table1
ORDER BY Col1
OFFSET (@PageNum-1) * @PageSize ROWS
FETCH NEXT @PageSize ROWS ONLY;