目标/问题
我想做的是相当简单的。我有两个域,InvoiceNbr
和TransAmt
。在表中,每个发票可能有多个事务。因此,我只是尝试将每个发票号的所有交易相加,以便每个发票号都有一个交易总额(稍后可以从余额中减去它以获得剩余余额)。听起来很简单,通常是……但我有一个问题(或bug?这不会导致错误)!
下面是一个查询,它将给出我的数据片段:
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似乎认为它正在输出正确的结果
我在这里忽略了一些非常简单的东西,或者这是一个我从未遇到过的访问错误?任何帮助将非常感激!谢谢。
- 请检查InvoiceNbr中是否有空间。
- 您可以通过在查询中添加COUNT(*)来验证这是InvoiceNbr问题。
我认为等效的查询看起来更像这样:
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
过滤出键值的条件