2015-06-11 100 views
0

我有一种情况,即将多个数据集插入临时表中。最后,我希望在临时表的所有行中显示这些多个数据集的总行数。例如:要显示数据集中所有行的1列总和

cnt1 name age 
300 peter 21 
200 piper 22 

所需的结果集:

cnt1 name age 
500 peter 21 
500 piper 22 

这是我在一个很长的存储过程结束寻找的结果。我无法弄清楚如何在单个列上合计并在所有行中显示总和。

回答

2

用窗函数:

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

编辑:

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

我们如何确保它只添加不同的cnt1值?我认为我们不能用OVER子句添加DISTINCT。任何解决方法?但感谢您的答案。 – rvphx

+0

@rvphx,参见编辑答案。 –

+0

谢谢乔治。编辑工作就像一个魅力。非常感谢。 – rvphx

0

尝试此操作(如果需要,可以使用union all将其追加到您之前的结果中)。

Select sum(Cnt1) over() as Cnt1, name, age 
from MyTable 

我的答案最初用于over (partition by 1),但我看到这是不必要的。

+0

@Giorgi的反应是相似但更好。 :) – APH

0

CROSS JOIN与返回的总计子查询:

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

@rvphx我会有兴趣知道这是如何执行相比,其他答案的窗口功能方法 – Bohemian

+0

我肯定会尝试这一次,我有一个工作。我会向你回报我找到的。感谢您花时间回答。 – rvphx

相关问题