MS Access:满足双条件时计算金额差值的技术问询
嘿,我来帮你搞定这个MS Access的需求!你要的这一系列操作完全可以通过一条SQL查询一次性完成,不用手动去定位记录再计算。下面是具体的实现方案:
解决方案:用自连接SQL查询完成所有步骤
直接运行这条MS Access SQL语句就能得到你想要的结果:
SELECT Jan.AccountNumber, Jan.SubAccountNumber, Feb.Amounts - Jan.Amounts AS AmountDifference FROM Table1 AS Jan INNER JOIN Table1 AS Feb ON Jan.AccountNumber = Feb.AccountNumber AND Jan.SubAccountNumber = Feb.SubAccountNumber WHERE Jan.[截止日期] = #01/29/2017# AND Feb.[截止日期] = #02/28/2017#;
逐部分解释:
- 自连接表:我们把
Table1分别起了别名Jan(对应1月29日的记录)和Feb(对应2月28日的记录),通过AccountNumber和SubAccountNumber确保关联的是同一个账户的两条记录。 - 日期筛选规则:在MS Access中,日期值必须用
#符号包裹,格式为月/日/年,所以这里#01/29/2017#就是你说的29.01.2017,#02/28/2017#对应28.02.2017。 - 金额差值计算:直接用2月记录的
Amounts减去1月的,并且给计算结果起个清晰的别名AmountDifference。 - 结果展示:最终查询会返回三个字段——账户编号、子账户编号,以及两条记录的金额差值,完美匹配你的需求。
可选调整:
如果有些账户只有1月记录但没有2月记录(或者反过来),你想把这些也显示出来的话,可以把INNER JOIN换成LEFT JOIN(会保留所有有1月记录的账户,没有2月记录的话差值显示为NULL)或者RIGHT JOIN(保留所有有2月记录的账户)。不过按你的需求,INNER JOIN是最精准的,它只会返回同时存在这两条记录的账户。
内容的提问来源于stack exchange,提问作者Camron
相关产品推荐
相关产品推荐

