首页 > 解决方案 > 如何返回执行结果和总行数

问题描述

我有一个过滤多个参数的查询。我想从该查询中返回总行数,但我也想从查询结果中返回 n 行。

查询正文如下所示:

SET @SqlBody = 'select * from Customer c join Address a on c.Id = a.CustomerId 
where a.County = @countyParam 
order by c.Id Offset @rowOffsetParam rows 
fetch next @rowFetchParam rows only'
EXEC(@SqlBody)

@countyParam = 'Texas'
@rowOffsetParam = 0
@rowFetchParam = 20

我想要的是我想知道总共有多少客户来自德克萨斯州的一个县,但我也想只返回 20 行,即使有 2578 客户来自德克萨斯州。

标签: sql-servertsql

解决方案


<code>SET @SqlBody = 'IF OBJECT_ID (N''#temptable'', N'U') IS NOT NULL DROP TABLE #TEMPTABLE select *,(select Count(*) from Customer c join Address a on c.Id = a.CustomerId 
where a.County = @countyParam) as Cnt 
into #TEMPTABLE from Customer c join Address a on c.Id = a.CustomerId 
where a.County = @countyParam 
order by c.Id 
SELECT Top 20 * FROM #TEMPTABLE'
EXEC(@SqlBody)</code>

推荐阅读