订单行项向上取整后求和的SQL查询报错及优化方案咨询
问题解决:行项向上取整后求和的正确SQL实现
你的原始查询报错是因为括号不匹配,Ceiling函数缺少闭合括号,修正后的基础写法如下:
SELECT SUM(Ceiling(Exp_Cart * Exp_Qty)) FROM Table_X WHERE Item IN ('3')
业务场景适配验证
针对你提到的两种统计场景:
- 当
Carton = 0.25,Quantity = 4时:0.25*4=1,Ceiling(1)=1,符合整箱统计预期; - 当
Carton = 0.25,Quantity =5时:0.25*5=1.25,Ceiling(1.25)=2,满足向上取整的产能统计需求。
额外优化建议
如果Exp_Cart或Exp_Qty存在NULL值,Ceiling会返回NULL,导致最终求和结果缺失对应行的数据。若需要将NULL视为0处理,可使用ISNULL函数兜底:
SELECT SUM(Ceiling(ISNULL(Exp_Cart, 0) * ISNULL(Exp_Qty, 0))) FROM Table_X WHERE Item IN ('3')
内容的提问来源于stack exchange,提问作者Trish Janzen
相关产品推荐
相关产品推荐

