2014-01-23 45 views
0

我有一個表中有重複的值。通過消除這些值我想要不同值的總和。但沒有分組。在SQL Server中有不同的總和

我的表

-------------------------------------- 
ID   City   collection 
--------------------------------------- 
1   xyz    5000 
2   xyz    5000 
3   abc    2000 
4   pqr    3000 
5   xyz    5000 
6   pqr    3000 
7   abc    2000 
----------------------------------- 

我想全收列的結果,但消除城市名稱 前。結果= 10000

不喜歡

xyz 15000 
abc 4000 
pqr 6000 

或不喜歡25000

,但結果應該是10000消除

+0

結果應該是(xyz + abc + pqr) – QuaBiz

+0

爲什麼沒有分組? –

+0

不管是否是團體。但它應該是通過消除重複的城市名稱來實現的。 – QuaBiz

回答

1

第一獲取城市和徵收Distinct組合,然後做SUM

select SUM(Collection) as Collection 
from 
(
    select distinct City, Collection 
    from table 
) data 
+0

這也可以。 –

+0

+1 http://sqlfiddle.com/#!6/c18a0/14/0 –

+0

感謝你的方式很容易... – QuaBiz

1
select sum(collection) as output 
from 
(
    select collection, row_number() over(partition by city order by collection) as RN 
    from yourtable 
) as inside 
where RN=1 
-1

如果你只是想沒有城市的名字集合列的不同值的總和(我想這是你從你的陳述要什麼「而是消除城市名稱」),然後只需運行以下命令:

SELECT SUM(DISTINCT [collection]) FROM tableName 

這會返回10000之後的值。

+0

任何人downvote任何理由?此代碼返回OP尋找的答案,在技術上是正確的,最重要的是需要最少的輸入:-) – steoleary