SELECT c.order_no, c.amount AS ch_amount, l.amount AS local_amount
FROM channel_bill c LEFT JOIN local_bill l
  ON c.order_no = l.order_no
WHERE l.order_no IS NULL OR c.amount <> l.amount;

每天的对账只比总笔数和总金额,连续一周都是平的。月底抽查发现渠道有两笔退款我们没记,我们这边多记了两笔手续费,总额刚好抵消。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,汇总比对只能发现总量差异,结构性的错配会被正负抵消。缺少按订单号逐笔核对的步骤,差异行永远暴露不出来。

「对账明细核对」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。改完隔一天再看一次,当场正常不代表能稳住。

处理上按这个顺序:按订单号全量 join 分出仅渠道有 仅本地有 金额不一致三类;退款和手续费单独拆表核对 不要混进支付总额;差异明细落表 每天生成待处理清单;连续三天同类差异升级告警 别只发邮件。

改完只确认一件事:对账报告能列出每笔差异的订单号和金额 手工构造的错配单会在明细里被找出来。

作者 9823189