Sql server 2012 除零问题

Sql server 2012 除零问题,sql-server-2012,Sql Server 2012,我总是被零除。我在这里读了一些答案,但也许我用错了。 感谢您的帮助 在这里查看我当前拥有的内容: ,cast(round((((Select JCCM.ContractAmt) - ((Select (sum (JCCP.CurrEstCost)) From JCCP Where JCCP.Job = JCCM.Contract))) / (Select JCCM.ContractAmt) *100),2) as numeric (36,2)) as 'Estim

我总是被零除。我在这里读了一些答案,但也许我用错了。 感谢您的帮助

在这里查看我当前拥有的内容:

,cast(round((((Select JCCM.ContractAmt)
    -
((Select (sum (JCCP.CurrEstCost))
    From JCCP
    Where JCCP.Job = JCCM.Contract)))
    /
(Select JCCM.ContractAmt) *100),2) as numeric (36,2)) as 'Estimated Gross Profit (Loss) %'

谢谢

确认JCCM.ContractAmt都是非零值

或者在分母上做一个ISNULL


或者将其添加到
中的
ISNULL
JCCM.contractam>0

确认JCCM.contractam均为非零值

或者在分母上做一个ISNULL


或者将其添加到
中的
;无论是
ISNULL
还是
JCCM.ContractAmt>0
我猜JCCM.ContractAmt是合同金额,因此如果合同金额是
0
,那么“估计毛利润(亏损)%”必须为零(假设公司在有合同金额之前没有任何
当前成本)

因此,您可以将其包装在case语句中,如下所示:

, CASE ISNULL(JCCM.ContractAmt,0)=0 THEN 0
       ELSE
         cast(round((((Select JCCM.ContractAmt)
         -
         ((Select (sum (JCCP.CurrEstCost))
         From JCCP
         Where JCCP.Job = JCCM.Contract)))
         /
         (Select JCCM.ContractAmt) *100),2) as numeric (36,2)) 
   END
as 'Estimated Gross Profit (Loss) %'

我猜JCCM.ContractAmt是合同金额,因此如果合同金额为
0
,那么“估计毛利润(亏损)%”必须为零(假设公司在获得合同金额之前没有任何
currentCost

因此,您可以将其包装在case语句中,如下所示:

, CASE ISNULL(JCCM.ContractAmt,0)=0 THEN 0
       ELSE
         cast(round((((Select JCCM.ContractAmt)
         -
         ((Select (sum (JCCP.CurrEstCost))
         From JCCP
         Where JCCP.Job = JCCM.Contract)))
         /
         (Select JCCM.ContractAmt) *100),2) as numeric (36,2)) 
   END
as 'Estimated Gross Profit (Loss) %'

如果分母假设为零,您希望返回什么结果?确认
JCCM.ContractAmt
都是非零值,或者对分母执行
ISNULL
。Tim,如果值为0,则返回“-”或0%Rudy,并非所有值都为零,只有少数值(选择JCCM.ContractAmt)*100),2)为数字(36,2))必须返回0,或其四舍五入为0。为什么要在施法之前将其舍入?如果分母假设为零,您希望返回什么结果?确认
JCCM.ContractAmt
都是非零值,或者对分母执行
ISNULL
。Tim,如果值为0,则返回“-”或0%Rudy,并非所有值都为零,只有少数值为零(选择JCCM.ContractAmt)*100),2)作为数字(36,2))必须返回0,或四舍五入为0。你为什么在演员面前绕圈子?太蠢了。我从未想过where子句>0。谢谢那确实有效。但我希望它显示即使0。我该如何正确地放置isnull?很高兴它有帮助:)太愚蠢了。我从未想过where子句>0。谢谢那确实有效。但我希望它显示即使0。我如何正确地放置isnull?很高兴它有帮助:)