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

基于日期、物料、颜色三条件的累计余额计算问题

问题分析

你当前的SQL仅计算了当日单天的余额变动(入库总数-出库总数),但累计余额需要统计从最早日期到当前日期的所有同物料、同颜色的余额变动总和——这就是切换到次日时余额异常的核心原因。

解决方案

方法1:使用窗口函数(适用于Access 2010及以上版本)

替换原SQL为以下语句,通过窗口函数实现分组累计:

SELECT 
    [BALANCE QUERY FINAL].Date,
    [BALANCE QUERY FINAL].Item,
    [BALANCE QUERY FINAL].Color,
    SUM([BALANCE QUERY FINAL].BAL) OVER (
        PARTITION BY [BALANCE QUERY FINAL].Item, [BALANCE QUERY FINAL].Color
        ORDER BY [BALANCE QUERY FINAL].Date
        ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
    ) AS 累计余额
FROM [BALANCE QUERY FINAL];
  • PARTITION BY Item, Color:按物料和颜色分组,确保累计仅针对同一物料同颜色的数据
  • ORDER BY Date:按日期排序,保证累计逻辑是从早到晚依次计算
  • ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW:指定累计范围为分组内第一条数据到当前行

方法2:子查询(兼容旧版Access)

如果你的Access版本不支持窗口函数,用子查询实现累计逻辑:

SELECT 
    main.Date,
    main.Item,
    main.Color,
    (
        SELECT SUM(sub.BAL)
        FROM [BALANCE QUERY FINAL] AS sub
        WHERE sub.Item = main.Item 
          AND sub.Color = main.Color 
          AND sub.Date <= main.Date
    ) AS 累计余额
FROM [BALANCE QUERY FINAL] AS main
GROUP BY main.Date, main.Item, main.Color;

这个子查询会对每一行数据,统计所有同物料、同颜色且日期小于等于当前行日期的BAL总和,从而得到截止当日的累计余额。

验证要点
  • 确认[BALANCE QUERY FINAL]中的BAL字段是正确的入库总数-出库总数,没有搞反正负逻辑
  • 检查日期列格式是否统一,避免因日期格式错误导致排序或筛选异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 06:05:07