繁体   English   中英

如何获得MS-Access以停止忽略总和计数查询中的记录

[英]How can I get MS-Access to stop ignoring records in both a sum and count query

要设置此问题,我必须在Access表中跟踪以下4条记录,这些记录用于跟踪应付款和注册。 该表名称为“交易”

ID | Transaction Date | Transaction Name | Credit Account | Debit Account | Amount
1 | 9/1/2011 | 2011 Yearly Registration | Accounts Receivable | Income : Registration | 27
2 | 2/18/2012 | Registration Payment | Cash | Accounts Receivable | 27
3 | 11/1/2012 | 2012 Yearly Registration | Accounts Receivable | Income : Registration | 27
4 | 12/7/2012 | Registration Payment | Cash | Accounts Receivable | 27

(“交易名称”字段实际上是一个ID字段,该FK指向另一个存储实际名称的表。稍后将显示该字段)。

然后,我创建了一个查询,将那些记录放入一种格式,在其中我可以对数量进行求和以找出余额:

SELECT [Transaction Date], [Transaction Name], (select [Account Name] from Account_lookup where ID = Transactions.[Credit Account]) as Account , sum(Amount) as [Totals]
FROM Transactions
GROUP BY [Transaction Date],[Transaction Name],[Credit Account]
UNION SELECT  [Transaction Date],[Transaction Name],(select [Account Name] from Account_lookup where ID = Transactions.[Debit Account]) as Account, sum(Amount)*-1 as [Totals]
FROM Transactions
GROUP BY [Transaction Date],[Transaction Name],[Debit Account]
ORDER BY 3, 1 DESC;

结果如下(收入和现金记录已删除,因为它们对于此问题并不重要)。 该查询称为“贷方和借方帐户总计”。

Transaction Date | Transaction Name | Account | Totals
9/1/2011 | 2011 Yearly Registration | Accounts Receivable | 27
2/18/2012 | Registration Payment | Accounts Receivable | (27)
11/1/2012 | 2012 Yearly Registration | Accounts Receivable | 27
12/7/2012 | Registration Payment | Accounts Receivable | (27)

因此,对Totals列求和的查询应返回0。但不是。

当我在上面的查询之上运行以下查询(我的查询正在查询另一个查询)时,

SELECT [Credit and Debit Account Totals].Account, Sum([Credit and Debit Account Totals].Totals) AS SumOfTotals
FROM [Credit and Debit Account Totals]
GROUP BY [Credit and Debit Account Totals].Account
HAVING ((([Credit and Debit Account Totals].Account)="Accounts Receivable"));

我得到以下内容:

Account | SumOfTotal
Accounts Receivable | 27

如果将总和更改为计数,则得到3。我期望总和为0,计数为4。

如何获得Access使用我所有4条记录的权限? 我猜测Access会以某种方式忽略第二笔付款,因为“交易名称”是相同的,但是“名称”不是总和查询的一部分,并且“日期”字段使第一行查询中的每一行都与众不同。

我试过将所有都放在SELECT之后,但这没用。 我是否必须首先将所有数据复制到另一个表中?现在,通过在联合查询之上运行总和查询,Access会变得混乱吗? 当我在第二个查询中添加日期,从而使每一行都不同时,我看到了所有4条记录。

退后一步。 更改您的第一个查询:

SELECT [Transaction Date], [Transaction Name], 
       [Credit Account] As Account,Amount 
FROM Transactions
UNION 
SELECT [Transaction Date],[Transaction Name], 
       [Debit Account] As Account,Amount*-1 
FROM Transactions

然后

SELECT [Credit and Debit Account Totals].Account, 
       Sum([Credit and Debit Account Totals].amount) AS SumOfamount
FROM [Credit and Debit Account Totals]
GROUP BY [Credit and Debit Account Totals].Account
HAVING [Credit and Debit Account Totals].Account="Accounts Receivable"

我认为,分组的层次太复杂了。

编辑重新评论

SELECT [Transaction Date], [Transaction Name], 
       Account, Sum(Amount ) AS Total
FROM (SELECT [Transaction Date], [Transaction Name],
      [Credit Account] As Account,Amount 
FROM Transactions
UNION 
SELECT [Transaction Date],[Transaction Name], 
       [Debit Account] As Account,Amount*-1 
FROM Transactions)  AS q
GROUP BY [Transaction Date], [Transaction Name], Account
ORDER BY 3, 1 DESC;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM