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

时间:2011-11-11 20:24:23

标签: sql sql-server

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

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

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

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

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

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

有什么想法吗?

4 个答案:

答案 0 :(得分:9)

@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

结果:

ID  RowCnt
1   3
2   3
3   3

通过常量进行分区使其计入整个结果集。

答案 1 :(得分:5)

使用CROSS JOIN

    SELECT a.*, b.numRows
      FROM YOUR_TABLE a
CROSS JOIN (SELECT COUNT(*) AS numRows
              FROM YOUR_TABLE) b

答案 2 :(得分:1)

查看SQL Server的Ranking函数。

SELECT ROW_NUMBER() OVER (ORDER BY a) AS 'RowNumber', a, b, c
FROM table;

答案 3 :(得分:0)

你可以这样做:

SELECT x.total, a, b, c
 FROM 
    table
    JOIN (SELECT total = COUNT(*) FROM table) AS x ON 1=1

将返回第一列中的记录总数,后跟字段a,b和amp; ç