Access 2016 - SQL Sum Query不提供Sum,No errors

时间:2016-11-01 15:04:12

标签: sql ms-access sum

目标/问题

我想做的事情相当简单。我有两个字段InvoiceNbrTransAmt。在表格中,每张发票可能有多个交易。因此,我只是尝试对每个发票号码的所有交易进行汇总,因此我将为每个发票号码提供一笔交易金额(我可以稍后从余额中减去以获得余额)。听起来很简单,通常是......但是我遇到了问题(或者错误?不会导致错误)!

我的数据

这是一个查询,它会提供我的数据片段:

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错误?任何帮助将不胜感激!感谢。

2 个答案:

答案 0 :(得分:1)

  • 请检查InvoiceNbr中的空格。
  • 您可以通过在查询中添加COUNT(*)来验证这是InvoiceNbr问题。

答案 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过滤掉键值。