我正在除以0错误。我注意到有时我划分的字段是NULL。
(SUM(RentMonths * SQFT) / SUM(SQFT))
当SQFT有时可以为空时,处理这种情况的正确方法是什么?我知道这可能是糟糕的数据,但除此之外;我现在无法解决这个问题。
答案 0 :(得分:5)
除以NULL
完全有效 - 结果只是NULL
。当您尝试除以零时,问题是(如错误消息所述)。
您可以使用NULLIF
来解决此问题:
(SUM(RentMonths * SQFT) / NULLIF(SUM(SQFT), 0))
如果除数为NULL
或任一操作数为0
,则结果为NULL
。
正如评论中所指出的,也可以使用CASE
语句:
CASE WHEN SUM(SQFT) <> 0 THEN (SUM(RentMonths * SQFT) / SUM(SQFT)) END
优势在于它几乎可以在任何数据库中使用,但缺点是它会重复表达式来计算除数。
答案 1 :(得分:0)
IF声明似乎非常合适,不是吗?
不知道这是否是正确的TSQL语法,但是:
IF @SQFT IS NOT NULL (SUM(RentMonths * SQFT) / SUM(SQFT))