Sql server SQL-大小写除零错误

Sql server SQL-大小写除零错误,sql-server,tsql,Sql Server,Tsql,我想保护下面的语句不受零除错误的影响。我怎样才能做到这一点 SELECT [MyColumn] = sum( case when v.Process_FundingDt between @begDt and @endDt and v.Loan_Purpose_Desc = 'PURCHASE' then v.Loan_LoanAmt else 0 end ) / sum ( case when v.Process_FundingDt

我想保护下面的语句不受零除错误的影响。我怎样才能做到这一点

SELECT [MyColumn] = sum( 
   case when v.Process_FundingDt 
   between @begDt and @endDt  
   and v.Loan_Purpose_Desc = 'PURCHASE' 
   then v.Loan_LoanAmt 
   else 0 
   end
 ) / sum (
   case when v.Process_FundingDt 
   between @begDt and @endDt 
   then v.Loan_LoanAmt else 0 
   end
 )
这可能有助于:

select [MyColumn] = case when Denominator = 0 then NULL else Numerator / Denominator end
  from (
   select sum( 
   case when v.Process_FundingDt between @begDt and @endDt and v.Loan_Purpose_Desc = 'PURCHASE' then v.Loan_LoanAmt 
     else 0 end ) as Numerator,
   sum (
   case when v.Process_FundingDt between @begDt and @endDt then v.Loan_LoanAmt
     else 0 end ) as Denominator
   ) as Edgar
如果添加了缺少的
FROM
子句,它可能会更有效


当然,根据查询优化器的操作,它可能会与功能冲突。

您可以使用此处提到的NULLIF方法:


使用
WHERE EXISTS
查看分母是否为非零-如果不是,请不要选择该行作为开始。好的,在分母中设置默认值零是获得除零错误的可靠方法。看到这个帖子:谢谢你们。我添加了NULL而不是零,现在它可以工作了。直到业务部门抱怨他们希望看到零。然后回到绘图板上。但至少现在我的老板很高兴。顺便说一句,在发布这个问题之前,我关注了38号帖子。在我的情况下,如果没有语法错误,我无法对语句进行求值。
SELECT [MyColumn] = sum( 
   case when v.Process_FundingDt 
   between @begDt and @endDt  
   and v.Loan_Purpose_Desc = 'PURCHASE' 
   then v.Loan_LoanAmt 
   else 0 
   end
 ) / NULLIF(sum (
   case when v.Process_FundingDt 
   between @begDt and @endDt 
   then v.Loan_LoanAmt else 0 
   end, 0)
 )