You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS Access中将数字与当前月份对比做求和查询无返回值问题求助

问题排查与解决思路

无结果原因排查

首先确认最常见的两个诱因:

  • 运行查询时的系统月份不在现有表的Month取值范围内:比如当前系统月份为11月,你提供的示例表仅存9、10月数据,自然无匹配结果返回。
    可先执行以下语句验证取到的当前月份是否符合预期:
-- 不同数据库日期函数略有差异,Access用DATE(),MySQL用CURDATE(),SQL Server用GETDATE()
SELECT MONTH(DATE()) AS current_system_month;

拿到返回值后直接查询对应月份的原始数据,确认是否存在匹配记录:

SELECT * FROM dt WHERE dt.Month = 上一步查到的月份数值;
  • 表结构实际与声明不符:如果Month字段实际为字符串类型,存储时带前导零(如存为'09'而非数值9),整数对比会匹配失败,可调整条件适配字符串格式。

通用查询方案

以下方案兼容跨年度1月场景(1月时上月自动识别为12月),数据更新后无需修改语句即可生效:

单月单独查询

-- 查询当月总和(Access写法,其他数据库替换日期函数即可)
SELECT SUM(Number) AS current_month_total
FROM dt
WHERE Month = MONTH(DATE());
-- 查询上月总和(Access写法,MySQL替换为DATE_SUB(CURDATE(), INTERVAL 1 MONTH),SQL Server替换为DATEADD(MONTH, -1, GETDATE()))
SELECT SUM(Number) AS last_month_total
FROM dt
WHERE Month = MONTH(DateAdd("m", -1, Date()));

单次查询返回两个月总和

SELECT
    SUM(IIF(Month = MONTH(DATE()), Number, 0)) AS current_month_total,
    SUM(IIF(Month = MONTH(DateAdd("m", -1, Date())), Number, 0)) AS last_month_total
FROM dt;

如果你的表中包含年份字段,建议在WHERE条件中追加年份匹配,避免不同年度同月份数据被合并统计。

内容的提问来源于stack exchange,提问作者Aleksandra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 05:54:02