我需要获取查询的行数,并在一个查询中获取查询的列.计数应该是结果列的一部分(对于所有行,它应该是相同的,因为它是总数).
例如,如果我这样做:
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)
按常量分区使其计入整个结果集.
使用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)
归档时间: |
|
查看次数: |
25742 次 |
最近记录: |