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

如何在SQL中按分组的Part Number填充Balance(余额)字段

纯SQL批量计算Balance方案

核心逻辑采用窗口聚合累加实现,无需逐行遍历计算,80万条数据通常几秒内即可完成计算,远高于逐行脚本的执行效率。

前提说明

  • 假设每个Part No分组内的行排序依据为ID字段(若有其他排序规则,替换下方SQL中ORDER BY ID部分即可)
  • 方案适用于支持窗口函数的主流数据库:MySQL 8.0+、PostgreSQL 9.4+、SQL Server 2012+、Oracle 11g+
  • 无需用到已生成的Previous Part No字段即可实现分组判断

可更新CTE数据库方案(SQL Server / PostgreSQL适用)

WITH balance_calc AS (
    SELECT 
        ID,
        "Current QOH" + SUM(Supply - Demand) OVER (
            PARTITION BY "Part No" 
            ORDER BY ID 
            ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
        ) AS calculated_balance
    FROM 你的表名
)
UPDATE 你的表名 t
SET Balance = bc.calculated_balance
FROM balance_calc bc
WHERE t.ID = bc.ID;

MySQL 8.0+ 版本方案

UPDATE 你的表名 t
JOIN (
    SELECT 
        ID,
        `Current QOH` + SUM(Supply - Demand) OVER (
            PARTITION BY `Part No` 
            ORDER BY ID 
            ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
        ) AS calculated_balance
    FROM 你的表名
) bc ON t.ID = bc.ID
SET t.Balance = bc.calculated_balance;

注意事项

  • 执行更新前可先单独运行内层SELECT语句,验证计算结果是否符合预期,确认无误后再执行更新操作
  • 可提前给Part No、ID字段建立索引,进一步提升计算速度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:27:03