我一直被零误差所分割。我已经在这里阅读了几个答案,但也许我以错误的方式使用它。 任何帮助表示赞赏。
看看我现在有什么:
,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) %'
谢谢!
答案 0 :(得分:0)
确认JCCM.ContractAmt都是非零值
或在分母上做一个ISNULL
或在WHERE
中添加; ISNULL
或JCCM.ContractAmt > 0
答案 1 :(得分:0)
我猜JCCM.ContractAmt是合约金额,所以如果合约金额为0
则估算毛利(亏损)%'必须为零(假设公司在签订合同金额之前没有CurrEstCost
)。
所以你可以将它包装在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) %'