1

我想用一个存储过程从表中获取最后 N 行。

我的存储过程有一些参数,比如@PageNumber@RowCount等等。

我有两个问题:

  • 我需要在我的用户界面中计算行数和结果,因为我想限制我的用户在他位于最后一页并按下一页时。

  • 我希望我的用户在其他页面中时可以按最后一页。

提示:我不想执行我的存储过程两次来获取结果和行数,因为它会创建动态并且需要很长时间才能执行。

有关更多描述,我最常说我的 sp 是这样的:

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  
4

2 回答 2

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;
于 2013-03-09T11:02:51.647 回答
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; 
于 2016-12-23T21:53:02.643 回答