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

SQL Server条件列求和技术问询:实现ProductionValue大于0时累加该列,否则累加SubTotal列

解决SQL Server中按日期分组的条件求和问题

让我帮你修正这个SQL语句,先梳理下原语句的核心问题:

  • 条件逻辑完全搞反了:你的需求是ProductionValue大于0时累加它,否则累加SubTotal,但原语句的判断逻辑刚好颠倒了
  • 错误地用字符串对比数值字段:ProductionValue作为数值类型字段,不该和字符串'-1.0'做比较,直接用数值判断更精准
  • 结果列的别名可以更贴合需求,避免和原字段混淆

正确的SQL实现

SELECT 
    Date,
    SUM(CASE 
        WHEN ProductionValue > 0 THEN ProductionValue 
        ELSE SubTotal 
    END) AS TotalSum
FROM Appointment
GROUP BY Date
ORDER BY Date ASC;

对应数据的计算验证

我们拿你提供的表数据核对结果,完全匹配预期:

  • 2021-09-02:
    • 行1:ProductionValue=-1 ≤0 → 取SubTotal=10
    • 行2:ProductionValue=10>0 → 取10
    • 总和:10+10=20(符合预期)
  • 2021-09-01:
    • 行3:ProductionValue=-1 ≤0 → 取20
    • 行4:ProductionValue=-1 ≤0 → 取20
    • 行5:ProductionValue=5>0 → 取5
    • 总和:20+20+5=45(符合预期)

如果你的ProductionValue字段确实是字符串类型(非常不推荐数值用字符串存储),可以把条件调整为CAST(ProductionValue AS DECIMAL(18,2)) > 0,不过优先建议把字段类型改成数值型,避免后续出现更多问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 14:37:38