Ответ 1
Если нам разрешено изменять контракт, вы можете:
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
И теперь общее количество будет доступно в виде отдельного столбца в результирующем наборе. К сожалению, нет способа присвоить это значение переменной в этом же самом выражении, поэтому мы больше не можем предоставить его как параметр OUT
.
Здесь используется предложение OVER
(доступно с 2005 года), чтобы можно было вычислить агрегат по всему (неограниченному) набору результатов и не требуя GROUP
ING.