ページングの場合、私は通常、SQL Server 2012 ストアド プロシージャで次のようなものを使用します (sys.system_columns を使用します。これがデモに適したテーブルかどうかはわかりません)。
DECLARE
@page INT = 10,
@pagesize INT = 10;
WITH syscols AS
(
SELECT
TotalRows = COUNT(1) OVER (),
RowNo = ROW_NUMBER() OVER (ORDER BY name),
Name
FROM sys.system_columns c
)
SELECT *
FROM syscols
WHERE RowNo BETWEEN 1 + (@page - 1) * @pagesize AND @page * @pagesize
ORDER BY RowNo;
すべての行に TotalRows の数値を含めるのは嫌いで、TotalRows の数値 (OUTPUT パラメーターなど) を返す適切な方法があるかどうか疑問に思っていましたが、テーブル変数やクエリの効率を低下させるものを使用しないでください。