目标/问题
我想做的事情相当简单。我有两个字段,InvoiceNbr
和 TransAmt
。在表中,每张发票可能有多个交易记录。因此,我只是尝试对每个发票编号的所有交易求和,这样我就可以为每个发票编号计算一笔交易总和(稍后我可以从余额中减去该总金额以获得剩余余额)。听起来很简单,而且通常是......但我遇到了一个问题(或错误?不会导致错误)!
我的数据
这是一个查询,它将提供我的数据片段:
SELECT [_MasterLog_Transactions].InvoiceNbr, [_MasterLog_Transactions].TransAmt
FROM _MasterLog_Transactions
GROUP BY [_MasterLog_Transactions].InvoiceNbr, [_MasterLog_Transactions].TransAmt
HAVING ((([_MasterLog_Transactions].InvoiceNbr)="16081702014741")
AND (([_MasterLog_Transactions].TransAmt)>0));
这会导致:
InvoiceNbr TransAmt
16081702014741 $1,096.73
16081702014741 $3,668.25
如果我使用 Access GUI 添加“总计”行,并选择“SUM”,它会正确计算“$4,764.98”。对于其他随机引用,在 _MasterLog_Transactions
表中,TransAmt
是一个“数字”字段,字段大小为“ double ”,格式为“货币”——所以它应该是能够与 SUM 函数一起使用。
我的查询
因此,根据上述数据,我创建了查询:
SELECT [_MasterLog_Transactions].InvoiceNbr,
Sum([_MasterLog_Transactions].TransAmt) AS MyTest
FROM _MasterLog_Transactions
GROUP BY [_MasterLog_Transactions].InvoiceNbr
HAVING ((([_MasterLog_Transactions].InvoiceNbr)="16081702014741"));
我的查询结果
InvoiceNbr MyTest
16081702014741 $1,096.73
我本来期望:
InvoiceNbr MyTest
16081702014741 $4,764.98
没有发生错误。它运行并且 Access 似乎认为它正在输出正确的结果。
我是否忽略了一些非常简单的事情,或者这是我从未遇到过的 Access 错误?任何帮助将不胜感激!谢谢。
最佳答案
- 请检查 InvoiceNbr 中是否有空间。
- 您可以通过在查询中添加 COUNT(*) 来验证这是否是 InvoiceNbr 问题。
关于sql - Access 2016 - SQL 求和查询不提供求和,没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40362786/