Sql 数据集中所有行显示的1列总和

Sql 数据集中所有行显示的1列总和,sql,sql-server-2008,tsql,Sql,Sql Server 2008,Tsql,我有一个例子,在一个临时表中插入多个数据集。最后,我想显示temp表所有行中这些多个数据集的总行数。例如: cnt1 name age 300 peter 21 200 piper 22 期望结果集: cnt1 name age 500 peter 21 500 piper 22 这是我在一个非常长的存储过程的末尾所寻找的结果。我不知道如何在单个列上相加并显示所有行的总和。试试这个(如果需要,可以使用union all将其附加到早期

我有一个例子,在一个临时表中插入多个数据集。最后,我想显示temp表所有行中这些多个数据集的总行数。例如:

cnt1   name    age
300    peter   21
200    piper   22
期望结果集:

cnt1   name    age
500    peter   21
500    piper   22
这是我在一个非常长的存储过程的末尾所寻找的结果。我不知道如何在单个列上相加并显示所有行的总和。

试试这个(如果需要,可以使用
union all
将其附加到早期结果中)

我的答案最初是用
覆盖(分区为1)
,但我认为这是不必要的

具有窗口功能:

select sum(cnt1) over() as cnt1, name, age
from TableName
编辑:

select (select sum(distinct cnt1) from TableName) as cnt1, name, age
from TableName

与返回总计的子查询交叉联接:

select gt cnt1, name, age
from mytable
cross join (select sum(cnt1) gt from mytable) x

@rvphx我想知道与其他回答的windows函数方法相比,它的性能如何。一旦我有了一个作品,我肯定会尝试一下。我会把我的发现报告给你。谢谢你花时间回答。@Giorgi的回答类似但更好。:)我们如何确保它只添加不同的cnt1值?我想我们不能添加DISTINCT with OVER子句。有解决办法吗?谢谢你的回答,谢谢乔治。编辑工作很有魅力。非常感谢。
select gt cnt1, name, age
from mytable
cross join (select sum(cnt1) gt from mytable) x