使用CTE在Result中进行行计数

时间:2014-11-11 06:13:11

标签: sql sql-server-2008 sql-server-2005 sql-server-2008-r2 sql-server-2012

我有以下查询

;with a as (
  select Id,Type,Description from wo)
  select * from a

输出

 Id    Type    Description 
 1      a        sadf
 2      a        ewrw
 3      b        223

我还需要一个cloumn以及所有行的总数,如下所示

 Id    Type    Description   RowCount
 1      a        sadf          3 
 2      a        ewrw          3
 3      b        223           3

如何使用CTE解决这个问题 请帮帮我。

1 个答案:

答案 0 :(得分:1)

您可以在2005 +

中使用count(*) over ()
;with a as (
  select Id,
         Type,
         Description, 
         count(*) over () as "RowCount"
  from wo)
  select * 
  from a

虽然您根本不需要CTE,但这一点并不明显。

  select Id,
         Type,
         Description, 
         count(*) over () as "RowCount"
  from wo

也可以。