首页 > 解决方案 > 在仅选择 PageSize 需求之前计算表中的行数

问题描述

tblEmployees500k在我选择行数之前,我试图获取表中的总行数@PageNumber

ALTER PROCEDURE [dbo].[spPagination] -- ORDER BY EmployeeID
  @PageNumber INT,
  @PageSize   INT
AS
BEGIN
  SET NOCOUNT ON;

    SELECT      Emp.id ,Emp.[firstName], Emp.[lastName], Emp.[salary], Emp.[startDateWork], Emp.age, Count(1) AS [RecordCount] 
    FROM        [dbo].[tblEmployees500k]    Emp
    ORDER BY    id      
    OFFSET      @PageSize * (@PageNumber - 1) ROWS
    FETCH NEXT  @PageSize ROWS ONLY OPTION (RECOMPILE);
END

Count(1) AS [RecordCount]导致错误

olumn 'dbo.tblEmployees500k.id' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。

标签: sqlsql-servertsql

解决方案


使用窗口函数:

Count(*) over () AS [RecordCount] 

(count(1)并且count(*)是等价的。)


推荐阅读