首页 > 解决方案 > Access中的循环查询

问题描述

我在 Acces 有两张桌子。一个显示我所有的帐户,称为 ACCOUNTS(有重复),第二个表显示所有交易,称为 TRANSACTIONS。

账户

在此处输入图像描述

交易

在此处输入图像描述

我基本上想创建一个表格,显示所有唯一帐号,然后在一列中显示每个帐户的所有借记交易交易的总和,然后在第二列中显示每个帐户的所有信用交易的总和。单独的查询将如下所示:

从帐户中选择 DISTINCT(Account_Number)

接着

从 TRANSACTIONS GROUP BY Debit_Account INTO DEBIT 中选择 SUM(Amount),然后从 TRANSACTIONS GROUP BY Credit_Account INTO CREDIT 中选择 SUM(Amount)

所以最终你会得到一个包含以下标题的表格

账户 借方 贷方

我将如何结合这两个查询。我猜它将通过 FOR LOOP 完成,但不确定如何在 Access 中构造它。

任何帮助将不胜感激。

标签: sqlloopsms-access

解决方案


你似乎想要left joingroup by

select a.account_number, sum(t.amount)
from accounts as a left join
     transactions as t
     on a.account_number = t.account
group by a.account_number;

如果所有帐户至少有一笔交易,那么您的第二个查询几乎就是您想要的:

SELECT Account, SUM(Amount) 
FROM TRANSACTIONS
GROUP BY Account;

在我看来,您应该始终GROUP BY在聚合查询中包含键SELECT——除非您有充分的理由排除它们。

编辑:

对于您修改后的问题,如何仅使用相关子查询:

select a.*,
       (select sum(t.amount)
        from transaction as t
        where t.debit_account = a.account_number
       ) as debits,
       (select sum(t.amount)
        from transaction as t
        where t.credit_account = a.account_number
       ) as credits
from account as a

推荐阅读