获取行计数,包括sql server中的列值

c-c*_*vez 6 sql sql-server

我需要获取查询的行数,并在一个查询中获取查询的列.计数应该是结果列的一部分(对于所有行,它应该是相同的,因为它是总数).

例如,如果我这样做: select count(1) from table 我可以有总行数.

如果我这样做: select a,b,c from table 我将获得查询的列的值.

我需要的是以一种非常有效的方式在一个查询中获取计数和列值.

例如: select Count(1), a,b,c from table 没有分组,因为我想要总数.

我找到的唯一方法是执行临时表(使用变量),插入查询的结果,然后计数,然后返回两者的连接.但如果结果得到数千条记录,那就不会非常有效.

有任何想法吗?

Dam*_*ver 10

@Jim H几乎是正确的,但选择了错误的排名功能:

create table #T (ID int)
insert into #T (ID)
select 1 union all
select 2 union all
select 3
select ID,COUNT(*) OVER (PARTITION BY 1) as RowCnt from #T
drop table #T
Run Code Online (Sandbox Code Playgroud)

结果:

ID  RowCnt
1   3
2   3
3   3
Run Code Online (Sandbox Code Playgroud)

按常量分区使其计入整个结果集.


OMG*_*ies 5

使用CROSS JOIN:

    SELECT a.*, b.numRows
      FROM YOUR_TABLE a
CROSS JOIN (SELECT COUNT(*) AS numRows
              FROM YOUR_TABLE) b
Run Code Online (Sandbox Code Playgroud)