在 CASE WHEN 中何处使用 NULLIF?
Posted
技术标签:
【中文标题】在 CASE WHEN 中何处使用 NULLIF?【英文标题】:Where to use NULLIF inside of a CASE WHEN? 【发布时间】:2020-05-03 17:30:01 【问题描述】:执行以下代码时出现除以零错误。我在ELSE
之后尝试了NULLIF
,但我遇到了同样的错误消息:
SELECT
country_IBS
, Sku
, LTM_Sales_USD
, PTM_Sales_USD
, LTM_Cost_USD
, (CASE WHEN -([LTM_Sales_USD]-[PTM_Sales_USD])/([LTM_Sales_USD]+[PTM_Sales_USD]) IS NULL
THEN 0
ELSE -([LTM_Sales_USD]-[PTM_Sales_USD])/([LTM_Sales_USD]+[PTM_Sales_USD]) END +1)/2 AS "Sales Growth % (scaled)"
FROM #tempSalesChange
【问题讨论】:
以下答案之一是否回答了您的问题?如果是,请接受其中之一。 【参考方案1】:将分隔符包裹在NULLIF
:
Expression 1 / NULLIF(Expression 2,0)
这意味着如果除法器为0
,则返回NULL
,避免除以零错误。
在你的情况下,那是([LTM_Sales_USD]+[PTM_Sales_USD])
。
【讨论】:
【参考方案2】:如果怀疑你想要:
(1 - ([LTM_Sales_USD] - [PTM_Sales_USD]) / NULLIF([LTM_Sales_USD] + [PTM_Sales_USD], 0)
) / 2 AS [Sales Growth % (scaled)]
即:除数应包含在NULLIF(..., 0)
中。这避免了除以零错误 - 在这种情况下,整个计算返回 NULL
。
【讨论】:
以上是关于在 CASE WHEN 中何处使用 NULLIF?的主要内容,如果未能解决你的问题,请参考以下文章