计算行而不发出单独的计数

时间:2013-11-12 18:56:10

标签: sql-server tsql sql-server-2005 count

我目前有两个单独的查询:

1)根据各种过滤器返回实际的结果集。

select a, b, c from TableA
where x = 123
and y = 'ABC'
and z = 999

2)显示总行数。

select count(*) from TableA
where x = 123
and y = 'ABC'
and z = 999

所以简而言之,我正在运行两次相同的查询。我在上面作为示例提出的查询比使用多个连接和许多过滤器的查询简单得多。

有没有更好的方法来实现同样的目标?

2 个答案:

答案 0 :(得分:4)

select a, b, c, count(*) over() as total
from dbo.TableA
where x = 123
and y = 'ABC'
and z = 999;

答案 1 :(得分:0)

你不能在第一次查询中将计数作为一列返回吗?

e.g。

select a, b, c, count(*) as total from TableA
where x = 123
and y = 'ABC'
and z = 999

这样可以避免两次运行