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

SQL Server求助:将TotalPrice值累加至ComboAmount列并显示最终价格

Hey,别慌!我来帮你解决这个SQL累加的问题。

你的需求很明确:当TotalPrice存在有效数值时,把它累加到ComboAmount里,最终让ComboAmount展示累加后的总价。结合你给出的查询语句,我给你调整了核心逻辑部分:

修改后的查询语句

SELECT 
    CAST( CASE WHEN a.TotalPrice != 0 THEN 1 ELSE 0 END AS bit) as CheckOtherPrice,
    a.OrderDetailId,
    a.ItemId,
    b.ItemCode,
    b.ItemName,
    e.GroupName,
    a.Quantity,
    a.Price,
    a.TotalPrice,
    a.OrderId,
    ISNULL(a.ComboId,0) ComboId,
    a.ComboGroupId,
    -- 核心修改:累加符合条件的TotalPrice到原ComboAmount
    a.ComboAmount + SUM(CASE WHEN a.TotalPrice IS NOT NULL AND a.TotalPrice != 0 THEN a.TotalPrice ELSE 0 END) 
        OVER (PARTITION BY a.ComboUniqueId) AS ComboAmount,
    a.ComboUniqueId,
    c.ComboName,
    d.GroupName ComboGroupName,
    a.OfferMasterId
FROM OrderDetail a
INNER JOIN ItemMaster b ON a.ItemId = b.ItemId AND a.OrderId IN (983)
INNER JOIN ItemGroup e ON b.ItemGroupId = e.ItemGroupId
LEFT JOIN ComboMaster c ON a.ComboId = c.ComboId
LEFT JOIN ComboGroup d ON a.ComboGroupId = d.GroupId

关键说明

  • 累加逻辑:用SUM() OVER (PARTITION BY a.ComboUniqueId)窗口函数,对同一个ComboUniqueId分组下的所有非0、非NULL的TotalPrice进行求和,再和原ComboAmount相加,得到最终的累加后总价。
  • 严谨性处理:CASE语句里增加了a.TotalPrice IS NOT NULL的判断,避免NULL值干扰累加结果。
  • 分组维度调整:如果你的累加规则不是按ComboUniqueId,而是按ComboGroupId或者OrderId,直接替换PARTITION BY后面的字段即可。

如果你的实际业务还有其他特殊规则,随时告诉我再调整~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:27:10