我的查询中包含以下代码:
int.TryParse(dr[1].ToString(), out a);
a = a + 1;
txtinvoiceno.Text = a.ToString("00000");
两个字段均为DateTime数据类型。问题是,当我按上述代码包含group时,会抛出此错误:
除以零错误。
警告:通过合计或其他SET消除了空值 操作。
我在这里阅读了一些线程,并尝试使用此线程:
CAST(COUNT(C.DateChanged) * 100.0 / COUNT(A.LastPassedBackToSalesDate) AS numeric(18, 2)) AS PBTSbutActived
但是,它没有帮助,我仍然遇到和以前一样的问题。
答案 0 :(得分:4)
NULLIF()
在COUNT()
之外 :
CAST(COUNT(C.DateChanged) * 100.0 /
NULLIF(COUNT(A.LastPassedBackToSalesDate), 0) AS numeric(18, 2)
) AS PBTSbutActived
也就是说,您需要检查COUNT()
的结果,而不是要计算的列。
答案 1 :(得分:0)
如果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
答案 2 :(得分: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