2017-08-30 42 views
1

我只想查詢數據,當添加金額列時結果將爲0,並且具有相同的ColumnA和ColumnB。但問題是,當我在組中添加ColumnB時,我得到了錯誤的結果。它也返回它的總和不爲0SQL - 等於0的多個重複行的總和

基本數據:

Input: 
    ColumnA,  ColumnB,   Amount 
    123,    555,    10 
    234,    555,    -25 
    234,    555,    10 
    234,    555,    15 
    123,    555,    20 

基本上,結果我要的是:

ColumnA,  ColumnB,   Amount 
     234,    555,    -25 
     234,    555,    10 
     234,    555,    15 

這裏是我發現的代碼:

SELECT * FROM table 
WHERE ColumnA In 
(
SELECT ColumnA FROM table 
GROUP BY ColumnA, ColumnB 
HAVING SUM(Amount) 
) 

對此有何幫助?

+0

這就是所謂的子集和問題 - 你可能需要一個過程來解決這個 – FuzzyTree

+0

@Jomari你只關心整個集合或關於總和爲0的子集。例如,如果在原始數據集中存在{234,555,5}的記錄,這會如何影響您的預期輸出? –

+0

很抱歉,如果您在數據中添加了{234,555,5},那麼什麼都不會發生,因爲我需要的數據具有相同的值0,因此添加到數據庫時 – Jomari

回答

0
SELECT * 
    FROM t_column t1 -- your table name 
WHERE EXISTS (SELECT 1 
       FROM t_column t2 -- your table name 
       WHERE t1.columnA = t2.columnA 
        AND t1.columnB = t2.columnB 
       HAVING SUM(amount) = 0 
      ) 

結果

columnA columnB amount 
234  555  -25 
234  555  10 
234  555  15 
+0

感謝這一點,這項工作適合我 – Jomari

0

像這樣的東西應該工作

select columnA 
, columnB 
, amount 
from table join 
(select columnA A 
, columnB B 
, sum(amount) theSum 
group by columnA, columnB) temp on columnA = A 
and columnB = B 
where theSum <> 0