【问题标题】:Where to use NULLIF inside of a CASE WHEN?在 CASE WHEN 中何处使用 NULLIF?
【发布时间】: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

【问题讨论】:

  • 以下答案之一是否回答了您的问题?如果是,请接受其中之一。

标签: sql sql-server tsql select


【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-01
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 2016-01-24
      • 1970-01-01
      相关资源
      最近更新 更多