2013-02-20 85 views
-1

我有一個錯誤提示「遇到零分錯誤。」在SQL Server 2005中。據我所知,我有幾行正在被零分爲導致此錯誤。所以我想知道當除數爲零時是否可以消除這個錯誤。如果除數爲0,則返回0.我該怎麼做?當除數爲0時出現「遇到零除錯誤」的錯誤

sum(isnull(cast(S.S_AmountCollected as numeric(10, 2)), 0))/sum(isnull(cast(S.AmountSold as numeric(10, 2)), 0)) 

謝謝!

+1

使用'case'來檢測0值並且不運行除法。 http://msdn.microsoft.com/en-us/library/ms181765.aspx – asawyer 2013-02-20 16:36:43

回答

1

使用CASE語句:

CASE WHEN SUM(ISNULL(CAST(S.AmountSold as numeric(10, 2)), 0) = 0 
     THEN 0 
     ELSE 
     SUM(ISNULL(CAST(S.S_AmountCollected as numeric(10, 2)), 0)) 
     /
     SUM(ISNULL(CAST(S.AmountSold as numeric(10, 2)), 0)) 
    END 
+0

我相信他有一個錯誤,當值爲0,而不是null,但你顯示的解決方案仍然會工作在一個小的變化 – 2013-02-20 16:38:11

+0

是啊。 。很難解開他的單線...... :) – 2013-02-20 16:39:43

+0

CASE很棒!謝謝Miky! :-) – Ram 2013-02-20 16:46:47

0

不能消除這種誤差由0是未定義值除以一個整數。你將不得不添加一個明確的檢查來獲得你期望的行爲。