我正在除以0錯誤。我注意到,有時我分割的字段是NULL。當某些除數爲NULL時處理除數0錯誤
(SUM(RentMonths * SQFT)/SUM(SQFT))
什麼是處理這種情況時SQFT有時可以爲空的正確方法?我知道這可能是不好的數據,但除此之外,我現在無法解決這個問題。
我正在除以0錯誤。我注意到,有時我分割的字段是NULL。當某些除數爲NULL時處理除數0錯誤
(SUM(RentMonths * SQFT)/SUM(SQFT))
什麼是處理這種情況時SQFT有時可以爲空的正確方法?我知道這可能是不好的數據,但除此之外,我現在無法解決這個問題。
除以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
的優點是,這將在幾乎所有的數據庫使用,但缺點是,它重複表達來計算除數。
IF語句在這裏似乎很適合,不是嗎?
不知道這是正確的TSQL語法,但:
IF @SQFT IS NOT NULL (SUM(RentMonths * SQFT)/SUM(SQFT))
+1。或合併,或案例聲明:-) – Bridge 2012-07-10 15:43:36
感謝yea情況是相當sl as在可讀的代碼。我會嘗試NULLIF。 – PositiveGuy 2012-07-10 15:47:22