Sql server 2008 遇到Sql Server查询被零除错误

Sql server 2008 遇到Sql Server查询被零除错误,sql-server-2008,Sql Server 2008,我发现我的查询有错误。我怎样才能解决它。我尝试了null if,但它不起作用 遇到被零除的错误 SELECT ( 100 - ( ( sum(t1.cAmount) - ( SUM(t1.cAmount) * t2.rAdvancedAmotizationPercent / 100 ) ) * 100 ) / t3.rAmount ) AS restofTotalMoblization, ( ( sum(t1.cAmount) - ( SUM(t1.cAmount) * t2.rA

我发现我的查询有错误。我怎样才能解决它。我尝试了null if,但它不起作用

遇到被零除的错误

SELECT ( 100 - ( ( sum(t1.cAmount) - ( SUM(t1.cAmount) * t2.rAdvancedAmotizationPercent / 100 ) ) * 100 ) / t3.rAmount ) AS restofTotalMoblization,
       ( ( sum(t1.cAmount) - ( SUM(t1.cAmount) * t2.rAdvancedAmotizationPercent / 100 ) ) * 100 ) / t3.rAmount           AS totalMoblization
FROM   tblPkgAdvances t1
       INNER JOIN tblFianacialInvoice t2
         ON t1.vsSysPackageId = 'GWSSP/WS/03'
       INNER JOIN tblPkgContractAwardDetails t3
         ON t2.iPackageId = t3.iPackageId
WHERE  t1.vsSysPackageId = 'GWSSP/WS/03'
GROUP  BY t1.cAmount,
          t2.rAdvancedAmotizationPercent,
          t3.rAmount 
而不是

(100 - ((sum(t1.cAmount) - (SUM(t1.cAmount) * t2.rAdvancedAmotizationPercent / 100)) * 100) / t3.rAmount)
你能行

case when t3.rAmount = 0 
then 0 
else (100 - ((sum(t1.cAmount) - (SUM(t1.cAmount) * t2.rAdvancedAmotizationPercent / 100)) * 100) / t3.rAmount) end
你可以试试

SELECT ( 100 - ( ( sum(t1.cAmount) - ( SUM(t1.cAmount) * t2.rAdvancedAmotizationPercent / 100 ) ) * 100 ) / t3.rAmount ) AS restofTotalMoblization,
       ( ( sum(t1.cAmount) - ( SUM(t1.cAmount) * t2.rAdvancedAmotizationPercent / 100 ) ) * 100 ) / t3.rAmount           AS totalMoblization
FROM   tblPkgAdvances t1
       INNER JOIN tblFianacialInvoice t2
         ON t1.vsSysPackageId = 'GWSSP/WS/03'
       INNER JOIN tblPkgContractAwardDetails t3
         ON t2.iPackageId = t3.iPackageId
WHERE  t1.vsSysPackageId = 'GWSSP/WS/03' and t3.rAmount>0
GROUP  BY t1.cAmount,
          t2.rAdvancedAmotizationPercent,
          t3.rAmount 
我刚刚筛选出大于0的记录