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

按年/按月滚动求和:多账户合并滚动余额实现问题

解决多账户余额累加及滚动总和计算问题

我来帮你搞定这个多账户合并余额+滚动累计的需求!你的单账户查询逻辑没问题,但多账户时结果没合并,核心原因是原查询的分组方式没先把同期间的多账户余额汇总,直接就计算滚动了。

问题出在哪?

原查询里GROUP BY fiscalperiod, BalanceAmt会把每个账户在同一会计期间的BalanceAmt作为单独行返回,窗口函数SUM(balanceamt) OVER(ORDER BY fiscalperiod)是对这些分散的行做累加,而不是先把同期间的所有账户余额加总再计算滚动,自然没法得到多账户合并后的结果。

正确的SQL写法

我们需要分两步走:先按会计期间汇总所有指定账户的总余额,再基于这个汇总结果计算滚动总和:

SELECT 
    FiscalPeriod,
    PeriodTotal AS BalanceAmt, -- 保留你习惯的字段名
    SUM(PeriodTotal) OVER(ORDER BY FiscalPeriod) AS RollingBalance
FROM (
    -- 第一步:按会计期间汇总所有目标账户的余额
    SELECT 
        FiscalPeriod,
        SUM(BalanceAmt) AS PeriodTotal
    FROM EpicorLive10.Erp.GLPeriodBal 
    WHERE 
        FiscalYear = '2018' 
        AND BalanceAcct IN ('01260|0000|000', '第二个账户编码', '第三个账户编码') -- 在这里添加所有需要合并的账户
    GROUP BY FiscalPeriod
) AS PeriodTotals
ORDER BY FiscalPeriod;

逻辑说明

  1. 子查询PeriodTotals会先把2018年每个会计期间内,所有指定账户的BalanceAmt加总,得到该期间的多账户总余额PeriodTotal。
  2. 外层查询再对每个期间的总余额做滚动累加:SUM(PeriodTotal) OVER(ORDER BY FiscalPeriod)会严格按照会计期间的顺序,从第一个期间开始累加至当前期间,最终得到从年初到该期间的累计滚动余额RollingBalance。

这样返回的结果就是每个会计期间的多账户合并余额,以及对应的滚动累计余额啦~

内容的提问来源于stack exchange,提问作者C.Gilles

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:28:10