select sum(isnull(ScrapQty,0)+isnull(Define27,0))/(case sum(a.define26 * a.define34 * d.srate) when 0 then 1000000 else sum(a.define26 * a.define34 * d.srate) end) yy from aa
select case when sum(a.define26 * a.define34 * d.srate) = 0 then 0 else sum(isnull(ScrapQty,0)+isnull(Define27,0))/sum(a.define26 * a.define34 * d.srate) end as yy from aa
NULLIF不行吧除数为0只能自己判断了select case when sum(a.define26 * a.define34 * d.srate) = 0 then 0 else sum(isnull(ScrapQty,0)+isnull(Define27,0))/sum(a.define26 * a.define34 * d.srate) end as yy from aa
select sum(isnull(ScrapQty,0)+isnull(Define27,0))/sum(a.define26 * a.define34 * d.srate)as yy from aa where sum(a.define26 * a.define34 * d.srate) >0
select case when sum(a.define26 * a.define34 * d.srate) = 0 then 0 else sum(isnull(ScrapQty,0)+isnull(Define27,0))/sum(a.define26 * a.define34 * d.srate) end as yy from aa
select case sum(a.define26 * a.define34 * d.srate) when 0 then 0 else sum(isnull(ScrapQty,0)+isnull(Define27,0))/sum(a.define26 * a.define34 * d.srate) end as yy from aa
select case when sum(a.define26 * a.define34 * d.srate) = 0 then 除数是0时你的替代值 else sum(isnull(ScrapQty,0)+isnull(Define27,0))/sum(a.define26 * a.define34 * d.srate) end as yy from aa
SQL Server2005不是支持try...catch了吗?捕获异常吧
同意用case when语句来处理为0的情况和非0的情况
case when a.define26 * a.define34 * d.srate=0 then null else a.define26 * a.define34 * d.srate end
SET ARITHABORT off SET ANSI_WARNINGS offSELECT 1/0
乌龟是正确的 先判断一下再除 select case when sum(a.define26 * a.define34 * d.srate) = 0 then 0 else sum(isnull(ScrapQty,0)+isnull(Define27,0))/sum(a.define26 * a.define34 * d.srate) end as yy from aa
else sum(isnull(ScrapQty,0)+isnull(Define27,0))/sum(a.define26 * a.define34 * d.srate)
end as yy
from aa
case when sum(a.define26 * a.define34 * d.srate) = 0 then 0 else
sum(isnull(ScrapQty,0)+isnull(Define27,0))/sum(a.define26 * a.define34 * d.srate) end as yy from aa
where
sum(a.define26 * a.define34 * d.srate) >0
应该可以的。
NULLIF的话,结果是null,要是想得到0,就在最外面加一个ISNULL(XX,0)
else sum(isnull(ScrapQty,0)+isnull(Define27,0))/sum(a.define26 * a.define34 * d.srate)
end as yy
from aa
else sum(isnull(ScrapQty,0)+isnull(Define27,0))/sum(a.define26 * a.define34 * d.srate)
end as yy
from aa
同意用case when语句来处理为0的情况和非0的情况
else a.define26 * a.define34 * d.srate end
SET ARITHABORT off
SET ANSI_WARNINGS offSELECT 1/0
乌龟是正确的
先判断一下再除
select case when sum(a.define26 * a.define34 * d.srate) = 0 then 0
else sum(isnull(ScrapQty,0)+isnull(Define27,0))/sum(a.define26 * a.define34 * d.srate)
end as yy
from aa