Microsoft Access中单表基于单列多条件查询多列统计合同年金额
Microsoft Access 合同年度金额汇总查询方案
这个需求完全可以通过单条查询实现,无需额外多表连接,使用Access原生支持的条件聚合语法即可实现你要的行转列汇总效果。
实现SQL代码
假设你的表名为InvoiceRecords,请自行替换为实际的表名:
SELECT ContractID, SUM(IIF(YearIndex = 1, Amount, NULL)) AS Year1Amount, SUM(IIF(YearIndex = 2, Amount, NULL)) AS Year2Amount, SUM(IIF(YearIndex = 3, Amount, NULL)) AS Year3Amount FROM InvoiceRecords GROUP BY ContractID;
语法说明
- 核心使用Access内置的
IIF函数做条件判断:当行的YearIndex符合对应年度序号时,取金额Amount参与求和,否则传入NULL SUM函数会自动忽略NULL值,没有对应年度发票的合同就会返回NULL,完全匹配你给出的预期输出- 仅需一次表扫描,执行效率比多表连接方案更高
- 如果后续需要扩展更多合同年度,只需要在SELECT部分新增对应
SUM(IIF(...))的列即可
内容的提问来源于stack exchange,提问作者Adam Rawlinson
相关产品推荐
相关产品推荐

