sql - 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 中构造它。
任何帮助将不胜感激。
解决方案
你似乎想要left join
和group 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
推荐阅读
- javascript - 保存并复制动态创建的 html从一个 DOM 到另一个 DOM 的框(不是框的 .value)?
- python-3.x - 气流测试任务有效,但在 dag 中运行失败
- email - MailApp.sendEmail 函数运行没有错误,但没有发送电子邮件
- stack - 堆栈 Windows 管理器程序操作方法
- flutter - 点击 IconButton() 时移除点击效果
- unix - 在多个命令输出上执行脚本
- command-line - 从 Blue Prism 调用命令行
- python - CSS已加载但未在显示上生效
- kerberos - Kerberos:S4U2self 票证必须是 FORWARDABLE (Containerproxy)
- python - 如何制作一个不和谐的机器人来检查每天的活跃用户数?