【问题标题】:Cognos Report Studio: CASE and IF StatementsCognos Report Studio:CASE 和 IF 语句
【发布时间】:2021-04-06 07:15:34
【问题描述】:

我在使用 Cognos Report Studio 并尝试过滤一些值并将它们替换为其他值方面非常陌生。

我目前有一些值显示为空白,并希望将它们替换为字符串“Property Claims”

我想在我的主要查询中使用的是

[投资组合] 为空时的情况 然后是“财产索赔” ELSE [投资组合]

这给了我一个错误。还有一个不同的过滤器,我想将挡风玻璃标志替换为字符串值而不是数字。例如,如果标志为 1,我想将其放置为“Windscreen Claims”。

如果 [声明挡风玻璃标志] = 1 然后('挡风玻璃') Else [声明挡风玻璃标志]

这些都不会出现同样的错误....有人可以帮帮我吗?

【问题讨论】:

  • 你有什么建议吗?

标签: cognos cognos-8


【解决方案1】:

您的第一个CASE 语句缺少END。错误信息应该很清楚。但是有一种更简单的方法可以做到这一点:

coalesce([Portfolio], 'Property Claims')

第二个问题类似:您的IF...THEN...ELSE 语句缺少一堆括号。但是在更正之后,您可能会遇到不兼容的数据类型的问题。您可能需要将数字转换为字符串:

case
  when [Claim Windscreen Flag] = 1 then ('Windscreen')
  else cast([Claim Windscreen Flag], varchar(50))
end

以后,请包含错误消息。

【讨论】:

    【解决方案2】:

    可能是语法

    • IS NULL(而不是 = null)
    • NULL 不为空。您可能还想要 = ' '
    • case 可能需要一个 else 和 END 在底部
    • 将数据类型称为其他内容可能会导致错误。例如像 [Sales] = 'Jane Doe' 这样的数字

    例如(假设结果是字符串,数据项2也是字符串),

    case
    when([data item 1] IS NULL)Then('X')
    when([data item 1] = ' ')Then('X')
    else([data item 2])
    end
    

    另外,如果您想将数据项显示为不同的类型,您可以使用 CAST

    【讨论】:

    • 是的,Cognos 过去允许您在 case 语句中混合数据类型,但我认为这在几年前就消失了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 2016-02-29
    • 1970-01-01
    • 2014-02-15
    • 1970-01-01
    相关资源
    最近更新 更多