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

MS Access按日期分组查询:获取当日最终库存与调整总和

MS Access 库存调整日志SQL查询问题

我在MS Access中有一张名为tbl_adj_logs的表,结构包含ID、EAN、CrtStock、Adjustment、AdjDate字段,用于记录库存调整操作的相关数据。每次库存调整时,系统会保存EAN、更新后的库存CrtStock、调整值Adjustment及调整日期AdjDate。

我需要编写一条SQL查询,按日期分组,获取指定EAN(值来自表单控件[Forms]![frm_Main]![search_ean_input])的当日最终库存、当日所有调整值的总和,输出字段需要包含EAN、FinalStock、SumOfAdjustment、AdjDate,用来生成图表。

我尝试了以下SQL语句但未成功:

SELECT a.CrtStock, DateValue(a.AdjDate), SUM(b.Adjustment) AS SumOfAdj
FROM tbl_adj_logs AS a INNER JOIN tbl_adj_logs AS b ON DateValue(a.AdjDate) = DateValue(b.AdjDate)
WHERE a.ID = (     SELECT MAX(c.ID)     FROM tbl_adj_logs AS c     WHERE c.EAN = [Forms]![frm_Main]![search_ean_input]     AND DateValue(c.AdjDate) = DateValue(a.AdjDate) )
GROUP BY a.CrtStock, DateValue(a.AdjDate)
ORDER BY DateValue(a.AdjDate);

修正后的SQL查询方案

要实现需求,可通过两个子查询分别处理当日最终库存和调整总和,再关联结果:

SELECT 
    t.EAN,
    t.FinalStock,
    s.SumOfAdjustment,
    t.AdjDate
FROM
    (
        -- 获取每日最后一次调整的库存(当日最终库存)
        SELECT 
            EAN,
            CrtStock AS FinalStock,
            DateValue(AdjDate) AS AdjDate
        FROM tbl_adj_logs
        WHERE ID IN (
            SELECT MAX(ID)
            FROM tbl_adj_logs
            WHERE EAN = [Forms]![frm_Main]![search_ean_input]
            GROUP BY DateValue(AdjDate)
        )
        AND EAN = [Forms]![frm_Main]![search_ean_input]
    ) AS t
INNER JOIN
    (
        -- 按日期分组计算当日调整总和
        SELECT
            DateValue(AdjDate) AS AdjDate,
            SUM(Adjustment) AS SumOfAdjustment
        FROM tbl_adj_logs
        WHERE EAN = [Forms]![frm_Main]![search_ean_input]
        GROUP BY DateValue(AdjDate)
    ) AS s
ON t.AdjDate = s.AdjDate
ORDER BY t.AdjDate;

关键说明

  • 子查询t:通过分组日期取每日最大ID(对应当日最后一次调整记录),提取该记录的库存值作为当日最终库存FinalStock;
  • 子查询s:按日期分组,直接统计指定EAN当日所有调整值的总和SumOfAdjustment;
  • 最后将两个子查询按日期关联,得到符合要求的完整字段集,同时确保只筛选目标EAN的数据。

这种写法逻辑清晰,避免原查询自关联导致的重复计算问题,完全适配Access SQL语法。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:55:28