2016-04-10 18 views
3

a ve b değerlerine sahip bir tablonuz varsa, yalnızca bir kopyası yoksa b'leri eklemenin bir yolu var mı? Örneğin çokZaten toplanmış tupl'leri takip edin sql

a b 
1 2 
2 3 
2 3 

için yalnızca 5

select sum(b if unique a), 
from table 
where ... 
+0

= 2 've' b = 3 ', birinci ve' b = 5' ikinci? 'A' 2 + 3' veya' 2 + 5' mi? –

cevap

2

aşağıdaki sorgu bir tür her grup a

için b en düşük değerini seçmektedir (yerine 8) almak
select min(b) min_b 
from mytable 
group by a 

Bu değerleri daha sonra türetilmiş tablo

select sum(min_b) from (
    select min(b) min_b 
    from mytable 
    group by a 
) t 

http://sqlfiddle.com/#!9/d82c5/1

1

Sen RDBMS'yi belirtmediniz, ancak SQL Server gibi pencere fonksiyonlarını destekleyen bir veritabanı kullanıyorsanız, sen WITH maddesini ve ROW_NUMBER() kullanarak benzersiz satırları ilk sorgulayabilir işlevini ve daha sonra SUM'u alın.

`a durumunda adde gereken hangi değerleri
;WITH C AS(
    SELECT a, b, 
     ROW_NUMBER() OVER (PARTITION BY a ORDER BY a) AS Rn 
    FROM Table1 
) 
SELECT SUM(b) FROM C 
WHERE Rn = 1 

SQL Fiddle

İlgili konular