簡體   English   中英

使用分組依據時遇到的除零錯誤

[英]Divide by zero error encountered when using group by

我的查詢中包含以下代碼:

CAST(COUNT(C.DateChanged) * 100.0 / COUNT(A.LastPassedBackToSalesDate) AS numeric(18, 2)) AS PBTSbutActived

這兩個字段都是DateTime數據類型。 問題是,當我在上面的代碼段中加入分組時,會拋出此錯誤:

除以零時遇到的錯誤。

警告:通過合計或其他SET操作消除了空值。

我在這里閱讀了一些線程,並嘗試使用此線程:

CAST(COUNT(NULLIF(C.DateChanged, 0)) * 100.0 / COUNT(NULLIF(A.LastPassedBackToSalesDate, 0)) AS numeric(18, 2)) AS PBTSbutActived

但是,這沒有幫助,我仍然遇到與以前相同的問題。

NULLIF()外面 COUNT()

CAST(COUNT(C.DateChanged) * 100.0 /
           NULLIF(COUNT(A.LastPassedBackToSalesDate), 0) AS numeric(18, 2)
    ) AS PBTSbutActived

也就是說,您需要檢查COUNT()結果 ,而不是要計算的列。

如果COUNT(A.LastPassedBackToSalesDate)為0,則無法避免該錯誤。 您應該在查詢中添加HAVING子句:

CAST(COUNT(C.DateChanged) * 100.0 /
       NULLIF(COUNT(A.LastPassedBackToSalesDate), 0) AS numeric(18, 2)
) AS PBTSbutActived FROM .... GROUP BY ... HAVING COUNT(A.LastPassedBackToSalesDate) <> 0

另一種選擇是使用case語句,

CASE WHEN COUNT(A.LastPassedBackToSalesDate) <>0 then 
CAST(COUNT(C.DateChanged) * 100.0 / COUNT(A.LastPassedBackToSalesDate) AS numeric(18, 2)) 
ELSE NULL END AS PBTSbutActived

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM