Отправьте общее количество строк / последнюю строку, включенную в набор результатов
У меня есть эта процедура для получения элементов на текущей странице. Я также хотел бы включить OUT
var, имеющий общее количество элементов, поэтому я могу рассчитать общее количество страниц.
USE [some_name]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetFilteredProductDetails]
@start int,
@end int
AS
BEGIN
SET NOCOUNT ON;
SELECT *
FROM
(
SELECT *, (ROW_NUMBER() OVER (ORDER BY itemid)) AS row
/* the rest of a big complex query that, so far, works.*/
) AS q
WHERE
(
row BETWEEN @start AND @end
)
END
Это мой текущий (раздетый) запрос, как я могу получить либо последнее число строк / общее количество строк внутреннего выбора, либо включить последнюю строку рядом со строками между @start
а также @end
,
1 ответ
Решение
COUNT(*)
с пустым OVER()
предложение даст вам общее количество строк. Затем вы можете добавить это в WHERE
предложение, если вам нужно вернуть последний ряд.
SELECT *
FROM
(
SELECT *,
(ROW_NUMBER() OVER (ORDER BY itemid)) AS row,
COUNT(*) OVER() AS row_count
/* the rest of a big complex query that, so far, works.*/
) AS q
WHERE
(
row BETWEEN @start AND @end or row=row_count
)