2013-03-09 3 views
1

Я хочу получить N последних строк из таблицы с помощью одной хранимой процедуры.Получить N последних строк из таблицы с одной хранимой процедурой

Моя хранимая процедура имеет некоторые параметры, такие как @PageNumber и @RowCount и т.д.

У меня есть 2 проблемы:

  • Мне нужно подсчитать строки и результаты в моем пользовательском интерфейсе, потому что я хочу, чтобы ограничить мой пользователь, когда он находится на последней странице, и нажмите следующую страницу.

  • Я хочу, чтобы мой пользователь мог нажать последнюю страницу, когда он находится на другой странице.

Совет: Я не хочу, чтобы выполнить свою хранимую процедуру дважды, чтобы получить результаты и количество строк, поскольку она создает динамичную и нужно много времени для выполнения.

Более подробное описание я больше всего говорят, что мой зр, как:

Create Procedure TestSelectBill 
( 
    @PageNumber int = 1 , 
    @RowCount int = 5 
) 
As 
Begin 
    Select 
     * 
    From billing.BillMaster As BM 
    Where 
    (Bm.SubscribeId = '12345674') 
    Order by SubscribeId 
    OFFSET @PageNumber * @RowCount ROWS 
    FETCH NEXT @RowCount ROWS ONLY; 
End 

ответ

0

Это мое решение:

Select 
    COUNT() OVER (ORDER BY (SELECT NULL)) as RowNumber, 
    * 
From billing.BillMaster As BM 
Where 
(Bm.SubscribeId = '12345674') 
Order by SubscribeId 
OFFSET (@PageNumber - 1) * @RowCount ROWS 
FETCH NEXT @RowCount ROWS ONLY; 
2

Вы можете использовать Row_Number() в запросе и порядке SubscribeId нисходящая и row[0]["RowNumber"] является общее количество так:

Select 
     * , 
ROW_NUMBER() OVER (ORDER BY SubscribeId DESC) as RowNumber 
    From billing.BillMaster As BM 
    Where 
    (Bm.SubscribeId = '12345674') 
    Order by SubscribeId 
    OFFSET @PageNumber * @RowCount ROWS 
    FETCH NEXT @RowCount ROWS ONLY; 
+0

Это не очень хороший ответ. Например, если мой запрос без пейджинга имеет 100 строк, и я хочу видеть вторую страницу с 10 строками, у меня будут строки от 11 до 20, но мне нужно число 100 также для создания 10 возможных страниц. –

Смежные вопросы