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

如何改写SQL语句实现跨多条记录计算余额?

实现累计余额计算的SQL修改方案

要计算每条记录的累计余额,核心是用窗口函数实现跨行的累计求和。按日期顺序对每行的Credit - Debit进行累计计算即可,具体修改如下:

修改后的SQL语句

SELECT 
    FORMAT(Date,'yyyy/MM/dd') AS FormattedDate,
    Reference,
    Description,
    Debit,
    Credit,
    -- 计算累计余额:从第一条记录到当前行的(Credit - Debit)之和
    SUM(Credit - Debit) OVER (ORDER BY Date) AS Balance
FROM TABLE
WHERE Id='ID' AND Date > '2022-01-01'
ORDER BY Date;

关键说明

  • SUM() OVER (ORDER BY Date)窗口函数:按Date排序后,自动计算从第一条到当前行的Credit - Debit累计值,也就是当前行的实时余额。
  • 必须保留ORDER BY Date:余额是按时间顺序累积的,确保记录按日期排序才能得到正确的余额结果。
  • 若同一天存在多条记录,可在ORDER BY中补充唯一标识字段(比如记录ID),避免排序混乱:
    SUM(Credit - Debit) OVER (ORDER BY Date, RecordId) AS Balance
    
  • 若需要纳入指定日期前的初始余额,可在累计值基础上直接加上初始余额:
    (SELECT InitialBalance FROM Account WHERE Id='ID') + SUM(Credit - Debit) OVER (ORDER BY Date) AS Balance
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:19:21