【问题标题】:Tableau Multiple IF StatementsTableau 多个 IF 语句
【发布时间】:2022-01-11 07:31:01
【问题描述】:

我正在尝试编写 IF 语句,但出现 1 个错误 - 任何帮助将不胜感激。

我需要声明说:如果准备日期在准备截止日期之后,则返回两个日期之间的天数。如果 Prepared Date 早于或等于 Prepared Deadline,则返回“0”,另外,如果 Prepared Date 为空,则返回 Preparer Deadline 与当前日期之间的天数。

if [准备日期] > [准备截止日期] then datediff('day',[准备截止日期],[准备日期]) elseif [准备日期]

enter image description here

【问题讨论】:

    标签: tableau-desktop


    【解决方案1】:

    两个错误很明显。第一个在错误消息中描述。不要混合使用字符串和整数,因此请去掉零周围的引号以将其转换为整数。第二个是您应该先测试字段中的空值,然后再在表达式中使用它。最后,由于 if/else if 测试是按顺序评估的,因此您无需在第三个分支上重复比较 - 您只需使用 else 即可。

    所以我会尝试

    if isnull([Prepared Date]) then
      datediff('day',[Prep Deadline],today()) 
    elseif [Prepared Date] > [Prep Deadline] then
      datediff('day',[Prep Deadline],[Prepared Date])
    else
      0
    end
    

    您可以进一步简化,方法是使用 IFNULL() 函数在字段为空的情况下提供默认值,并使用 MAX() 函数确保永远不会返回负数。

    max(datediff('day',[Prep Deadline], ifnull([Prepared Date], today())), 0)
    

    这是你喜欢的口味问题 - 从逻辑上讲,这两种表达方式是等价的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-08
      相关资源
      最近更新 更多