2012-06-14 62 views
1

我有一個查詢返回2列和多行。我該如何返回一個不爲0或null的總和值?如何從Select sum語句只返回非零值

表「audit」是這樣的:

parent_link integer; 
dr   smallint 
amount  decimal(18,2) 

select parent_link, sum(case dr when 1 then amount else -amount end) 
from audit where books = 3 group by parent_link 

我檢查以查看是否值在DR柱放入量柱平衡1倍0的值。

該查詢工作並返回幾千行,其中0作爲總和結果,2則返回總和值。我只想返回具有總和值的行。

任何幫助將不勝感激。

回答

9

使用having

select parent_link, sum(case dr when 1 then amount else -amount end) 
from audit 
where books = 3 
group by parent_link 
having sum(case dr when 1 then amount else -amount end) <> 0 
+0

完美的作品。非常感謝您的幫助!! – user1455790

+1

如果答案正確,請記得設置問題以回答並最終添加投票。我們在這裏吃點:) – AngeloBad

1

此外,嘗試這樣的查詢:(它不需要任何額外的計算)

SELECT _inner._SUM FROM 
(
    SELECT parent_link, SUM(CASE dr WHEN 1 THEN amount ELSE -amount END) AS _SUM 
     FROM audit WHERE books = 3 GROUP BY parent_link 
) AS _inner 
WHERE _inner._SUM <> 0