Mik*_*ike 3 sql sql-server-2008
我遇到了除零的问题.如果分母为零,我希望该值为零.当我尝试使用时nullif
,我最终得到零或一个计算值.
这是SQL:
Select
StateCode, Month1Date,(Sum(Order)/Sum(Value)) as myValue
from tblOrders
inner join tblStates on OrderStateCode = StateCode
group by StateCode, Month1Date
Run Code Online (Sandbox Code Playgroud)
你需要一个案例陈述:
Select StateCode, Month1Date,
(case when sum(value) = 0 then 0 else Sum(Order)/Sum(Value)
end) as myValue
from tblOrders inner join
tblStates
on OrderStateCode = StateCode
group by StateCode, Month1Date
Run Code Online (Sandbox Code Playgroud)
Select
StateCode,
Month1Date,
ISNULL(Sum(Order) / NULLIF(Sum(Value), 0), 0) AS myValue
from
tblOrders
inner join
tblStates
on OrderStateCode = StateCode
group by
StateCode,
Month1Date
Run Code Online (Sandbox Code Playgroud)
甲0
分母被改变成NULL
,这将导致result
要NULL
。然后,整个结果必须ISNULL()
将所有NULL都设为0。
就我个人而言,我不会包括,ISNULL()
并将结果保留为NULL
。但这实际上取决于用例。
编辑:删除了CASE WHEN版本,因为另一个答案就在我的面前。
归档时间: |
|
查看次数: |
8262 次 |
最近记录: |