Sql 数据集中所有行显示的1列总和
我有一个例子,在一个临时表中插入多个数据集。最后,我想显示temp表所有行中这些多个数据集的总行数。例如: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将其附加到早期
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