SQL command if sum = 0 by criteria

SQL command if sum = 0 by criteria

在我的 table 中,我有代金券、维度和金额。每张凭证都是独一无二的,并且每两张凭证的维度通常是相似的。每个维度的每个凭证通常也有相同的正数和负数。我正在寻找一个命令,该命令将排除汇总为 0 的每个维度。

到目前为止我有

Select Dimension,
       Sum(Amount)
From "table"
Group by Dimension;

这给了我一个table,我可以在其中看到每个维度的汇总金额。

如何扩展它以给我具有未汇总为 0 的维度的凭证?

实际 table 包含 200 000 行,但我已经举了一个例子来说明我开始的内容以及我希望得到的结果:

[Table]

[结果]

可以这样

仅筛选 SUM 等于 0 的行

Select Dimension
From "table"
Group by Dimension
Having Sum(Amount) = 0

并将上述查询作为子查询排除 SUM 等于 0 的维度

SELECT *
FROM "table"
WHERE Dimension NOT IN (
    Select Dimension
    From "table"
    Group by Dimension
    Having Sum(Amount) = 0
)

它会 return 您完整记录来自“table”。

至少它应该适用于 MS SQL DBMS。

您可以尝试这样的操作:

Select a.voucher, b.dimension from table a

left join(Select dimension, sum(amount) 
from table 
group by 1
having sum(amount) <> 0) b on a.dimension = b.dimension;