我希望从表中获取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
答案 0 :(得分: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;
答案 1 :(得分: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;