Sql 如何从Select sum语句中仅返回非零值

Sql 如何从Select sum语句中仅返回非零值,sql,select,sum,firebird,Sql,Select,Sum,Firebird,我有一个返回两列和多行的查询。如何只返回一个不为0或null的和值 表审计如下所示: 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 我正在检查金额列中的值是否与

我有一个返回两列和多行的查询。如何只返回一个不为0或null的和值

表审计如下所示:

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为求和结果中的值。我只想返回带有总和值的行

任何帮助都将不胜感激。

请使用:

使用具有:


另外,尝试这样的查询:它不需要任何额外的计算

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

另外,尝试这样的查询:它不需要任何额外的计算

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

工作完美。非常感谢你的帮助!!如果答案是正确的,记得将问题设为已回答,并最终添加投票。我们在这里吃点东西:效果完美。非常感谢你的帮助!!如果答案是正确的,记得将问题设为已回答,并最终添加投票。我们在这里吃点东西: