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;
在我的 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;