2015-12-15 37 views
0

我有一個數據庫表中有一個列中的多個代碼對應於另一列中的某些值。例如,列A中的特定代碼對應於列B中的值。列A中有成千上萬的重複條目與列B中的不同值相對應。我想要將列B中具有A列中的特定代碼,而只保留A列代碼的一個副本。您可以將列視爲鍵值對,其中A列包含鍵,B列包含該值。你會如何總計一列中的值並在另一列中保留一個明顯的值?

基本上,我想添加列B中的所有值,其中列A是一個特定的值,並且我想要爲列A中的所有唯一「鍵」執行操作。我確信這是一個簡單的任務;不過,我對SQL很陌生。任何幫助將不勝感激。

Here is the result I'm looking for.

1

+1

請添加樣本數據和預期的結果 –

+0

是,編輯這個問題,並顯示實際的列名,但假數據如果它是如此的機密。使用空格對齊示例數據而不是製表符。同時顯示您期望顯示的結果。 – DRapp

+1

我相信你需要'分組依據'和'SUM'聚合 –

回答

3

這應該工作:

SELECT 
    A, 
    SUM(B) AS sum_b 
FROM [yourTable] 
GROUP BY A 
+0

這工作。謝謝!如果列B中的所有值都是整數,您是否會知道爲什麼某些結果具有浮點回答?當結果太大而不能包含在'Integer'數據類型中時,SQL Server會做些什麼? – ic3man7019

+0

總和的結果數據類型將與列的數據類型有關 - 不一定是內容(例如,您可能有浮點數或小數點列恰好具有所有整數)。如果結果對於int數據類型來說太大,則會看到溢出錯誤,而不是不同類型的值。如果這是一個問題,可以在求和之前將該值轉換爲整數,如下所示:SUM(CONVERT(int,B)) – morgb

+0

啊,非常好。再次感謝。 – ic3man7019

0
SELECT COLUMNA, SUM(ISNULL(COLUMNB,0)) AS TOTAL 
FROM 
    dbo.TableName 
GROUP BY COLUMNA 
相關問題