2015-06-11 40 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

相關問題