如何在具有顶行过滤器的情况下获得总行数

时间:2014-09-17 02:08:31

标签: sql sql-server-2008

我的存储过程中有一个临时表,我将填充一些select语句。最后,我必须只选择几个顶级记录发送到UI。

有什么方法可以让我知道总记录,但选择前几条记录。意味着如果我有2515条记录,但我只选择前1000条,但仍然可以了解总数。

SELECT TOP (@ROWS) * 
FROM #tempMoveFinal 
WHERE case_id = @case_id 
ORDER BY last_update_date DESC, item_id

我尝试将所有记录放在另一个没有top行子句的临时表中,然后选择总行数,但这会使搜索查询变慢。

是否有可用于此案例的内置功能?

1 个答案:

答案 0 :(得分:1)

我认为你是这样的意思:

with total as (
    select 
       count(*)         as TotalCount
    from #tempMoveFinal 
    WHERE case_id = @case_id 
)
SELECT TOP (@ROWS) * 
    ,total.TotalCount
FROM #tempMoveFinal 
CROSS JOIN total
WHERE case_id = @case_id 
ORDER BY last_update_date DESC, item_id