hasta - Mejor forma de obtener el recuento total junto con la paginación en SQL Server 2012
string en sql (1)
Si podemos cambiar el contrato, puede tener:
SELECT CSTNO, CSTABBR,COUNT(*) OVER () as TotalCount
FROM DBATABC
WHERE CSTABBR LIKE ''A%''
ORDER BY CSTNO
OFFSET ( @OffSetRowNo-1 ) * @FetchRowNo ROWS
FETCH NEXT @FetchRowNo ROWS ONLY
Y ahora el total estará disponible como una columna separada en el conjunto de resultados. Lamentablemente, no hay forma de asignar este valor a una variable en esta misma instrucción, por lo que ya no podemos proporcionarlo como un parámetro OUT
.
Utiliza la cláusula OVER
(disponible desde 2005) para permitir que un agregado se compute en todo el conjunto de resultados (ilimitado) y sin que se requiera GROUP
ing.
Tengo el requisito de obtener el recuento total de registros junto con la paginación. Actualmente lo estoy haciendo como se detalla a continuación en SQL Server 2012. Esto necesita una consulta por separado para obtener el conteo. ¿Hay alguna forma mejorada en SQL Server 2012?
ALTER PROCEDURE dbo.tpGetPageRecords
(
@OffSetRowNo INT,
@FetchRowNo INT,
@TotalCount INT OUT
)
AS
SELECT CSTNO, CSTABBR
FROM DBATABC
WHERE CSTABBR LIKE ''A%''
ORDER BY CSTNO
OFFSET ( @OffSetRowNo-1 ) * @FetchRowNo ROWS
FETCH NEXT @FetchRowNo ROWS ONLY
SET @TotalCount =
(SELECT COUNT(*)
FROM DBATABC
WHERE CSTABBR LIKE ''A%'')
GO