Skip to content

月结检查:库存台账 vs 库存核算对账

用途:核对「库存模块的现存量/台账」与「存货核算模块的结存」是否一致。库存和核算分属两个模块,日常出入库后若操作不完整(漏记账、未审核),两边会脱节。

业务口径

  • 库存结存:库存模块的可用量/现存量(基于出入库单据)
  • 核算结存:存货核算模块的结存数量/金额(基于记账后的单据)
  • 正常两者一致;差异来自:单据未记账、记账时间差、库存调整未同步核算

T-SQL 版本(SQL Server)

sql
-- 用途:核对库存现存量与存货核算结存数量
-- 方言:T-SQL (SQL Server)
-- 参数:@wh 仓库编码(可空=全部)
DECLARE @wh VARCHAR(20) = NULL;

WITH inv AS (  -- 库存现存量
    SELECT cInvCode,
           SUM(CASE WHEN @wh IS NULL OR cWhCode = @wh THEN iQuantity ELSE 0 END) AS inv_qty
    FROM CurrentStock                -- 示意表:现存量表
    GROUP BY cInvCode
),
ia AS (  -- 核算结存
    SELECT cInvCode, SUM(iQuantity) AS ia_qty
    FROM IA_Balance                  -- 示意表:存货核算结存
    WHERE (@wh IS NULL OR cWhCode = @wh)
    GROUP BY cInvCode
)
SELECT
    COALESCE(i.cInvCode, a.cInvCode) AS 存货编码,
    ISNULL(i.inv_qty, 0) AS 库存现存量,
    ISNULL(a.ia_qty, 0)  AS 核算结存,
    ISNULL(i.inv_qty, 0) - ISNULL(a.ia_qty, 0) AS 数量差
FROM inv i
FULL OUTER JOIN ia a ON i.cInvCode = a.cInvCode
WHERE ABS(ISNULL(i.inv_qty, 0) - ISNULL(a.ia_qty, 0)) <> 0
ORDER BY ABS(ISNULL(i.inv_qty, 0) - ISNULL(a.ia_qty, 0)) DESC;

Oracle 版本

sql
-- 用途:核对库存现存量与存货核算结存数量
-- 方言:Oracle
-- 参数::wh 仓库编码(可空=全部)
WITH inv AS (  -- 库存现存量
    SELECT cInvCode,
           SUM(CASE WHEN :wh IS NULL OR cWhCode = :wh THEN iQuantity ELSE 0 END) AS inv_qty
    FROM CurrentStock                -- 示意表
    GROUP BY cInvCode
),
ia AS (  -- 核算结存
    SELECT cInvCode, SUM(iQuantity) AS ia_qty
    FROM IA_Balance                  -- 示意表
    WHERE (:wh IS NULL OR cWhCode = :wh)
    GROUP BY cInvCode
)
SELECT
    COALESCE(i.cInvCode, a.cInvCode) AS 存货编码,
    NVL(i.inv_qty, 0) AS 库存现存量,
    NVL(a.ia_qty, 0)  AS 核算结存,
    NVL(i.inv_qty, 0) - NVL(a.ia_qty, 0) AS 数量差
FROM inv i
FULL OUTER JOIN ia a ON i.cInvCode = a.cInvCode
WHERE ABS(NVL(i.inv_qty, 0) - NVL(a.ia_qty, 0)) <> 0
ORDER BY ABS(NVL(i.inv_qty, 0) - NVL(a.ia_qty, 0)) DESC;

语法差异速查

T-SQLOracle
判空ISNULL(x,0)NVL(x,0)
参数@wh 变量:wh 绑定变量
CASE 表达式一致一致

常见差异原因

  1. 单据未记账:库存单据审核了,但存货核算没记账 —— 最常见
  2. 记账时间差:月结时点不同步,两边跑的时点不一致
  3. 库存调整未同步:库存模块做了盘盈/盘亏调整,核算没同步

排查建议

  • 先确认差异单据清单:哪些入库单/出库单在库存有、核算没有
  • 库房单据的「审核」和「记账」是两个动作,很多操作员只做了审核
  • 月结前跑一遍,把差异单据记账补齐,再月结

内容已脱敏 · 不含客户名称与真实金额

微信公众号显林的随笔

ERP 实施笔记 · 案例复盘 · 资料更新提醒
微信搜一搜「显林的随笔」即可关注

二维码待补
(林哥提供后替换)