我想做的事情相当简单。我有两个字段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'以及格式' currency' - 所以它应该能够与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错误?任何帮助将不胜感激!感谢。
答案 0 :(得分:1)
答案 1 :(得分:1)
我认为等效查询看起来更像是这样:
SELECT t.InvoiceNbr,
Sum(t.TransAmt) AS MyTest
FROM _MasterLog_Transactions as t
WHERE t.InvoiceNbr = "16081702014741" AND
t.TransAmt > 0
GROUP BY t.InvoiceNbr;
我猜测你的真实汇总数据如下:
InvoiceNbr TransAmt
16081702014741 $1,096.73
16081702014741 $3,668.25
16081702014741 -$3,668.25
这是条件[_MasterLog_Transactions].TransAmt > 0
过滤掉键值。