Я использую этот запрос, чтобы получить доступ к странице и индексу ограниченного результата из таблицы Customers. Например:Sql server возвращает количество строк из выбранной хранимой процедуры
Если @iStartIndex = 0 и @iRowsPerPage = 10 результат 10 строк от 0 - 10.
SELECT
Name, LastName, City
FROM Customers
OFFSET @iStartIndex ROWS
FETCH NEXT @iRowsPerPage ROWS ONLY
Моя проблема заключается в том, что мне нужно количество всех строк из этого запроса. Например: если есть 1000 строк, запрос будет выбирать только 10 строк. Мне нужны эти 10 строк, но мне также нужно знать, сколько строк в итоге - в этом случае 1000 строк.
Что я уже пробовал - это вернуть @@ ROWCOUNT, но он возвращает 10, результат последнего запроса. Я также попытался написать один отдельный запрос:
SELECT COUNT(*)
FROM Customers
и ниже я написал исходный запрос.
Есть ли способ вернуть строки, а также вернуть число строк в виде скалярного значения в той же хранимой процедуре?
Вам нужно будет сделать два запроса, никоим образом не обойти его. Вы можете объединить эти запросы в один результирующий набор, если хотите (путем присвоения результата первой переменной) или использовать выходной параметр. (Технически, вы могли бы сделать это в одном запросе, набив первый в подзапросе, но на самом деле все еще два вопроса в фоновом режиме.) –
Умм ... если в результате есть 10 строк, вы можете объяснить, как 10 не правильный номер? Если вы хотите получить общее количество клиентов, вам нужно будет сделать это как отдельный запрос (или подзапрос). –
Это можно сделать с помощью оконного агрегата, но большинство людей сообщают о производительности как о худшем, чем о запуске двух отдельных запросов. –