【问题标题】:How to use IF and CAST function in COGNOS?如何在 COGNOS 中使用 IF 和 CAST 函数?
【发布时间】:2018-06-12 00:26:23
【问题描述】:

如果 [业务单位] = '空运出口' 然后是 '1' ELSE [事业部] 结束

一个业务部门包括 - 空运出口 - 空运进口 - 海运出口 - 海运进口

我的目标是描绘仅空运出口的中转目标天数,该天数始终为 1 天。

目前,我正在处理一个名为“Transit Target 1”的数据项。

会有一个名为“Total Transit Target”的数据项,它由“Transit Target 1”、“Transit Target 2”和“Transit Target 3”组成。

我想将“1”转换为浮点数,以便稍后计算“总运输目标”。

我该怎么做呢?请帮忙。

【问题讨论】:

    标签: if-statement casting cognos cognos-10


    【解决方案1】:

    您将在投射结果时遇到问题。问题是编码后的结果会产生五个可能的值:

    • 空运出口
    • 空运进口
    • 海运出口
    • 海运进口
    • 1

    只有最后一个值可以成功转换为数字(或浮点)类型。

    我要做的是修改您的 IF...THEN 以输出 1 或 0,两个整数,因此已经以正确的形式进行计算:

    IF ([Business Unit] = 'Air Export')
    THEN (1) 
    ELSE (0)
    

    请注意,两个结果值都没有引号。它们将是整数类型,可以在计算中使用

    在 Cognos 中使用 IF..THEN 的一些技巧。所有条件和结果都必须用括号括起来。此外,必须有一个 ELSE 子句。最后,没有END。这在 CASE 语句中使用。

    【讨论】:

    • 你好约翰苏姆。感谢您的强调。我不知何故意识到我没有使用括号,然后它就起作用了。我也看到了你的解决方案。我也这样做了,但不知何故,如果不是空运出口,我仍然需要反映业务部门(由于大客户经理的要求)。只是想知道是否真的有办法做到这一点。如果不可能,我会接受。但我只是想探索可能性。
    • 在这种情况下,您应该使用 switch 语句。在 Cognos 中,切换将是: case when ( [Business Unit] = 'Air Export' ) then (1 ) when ( [Business Unit] = 'Air Import' ) then ( 0 ) end 您可以根据需要添加
    【解决方案2】:

    我不想让我听起来像是在被动积极地提供无益的帮助,但我认为我可能想从探索 CAST 功能开始。

    您要从哪里获得“Total Transit Target”的其他值?即“过境目标 2”和“过境目标 3”来自哪里?基于业务单位的其他计算? case 函数会比 IF 更有用吗?

    谁在确定目标?对象的目标值会改变吗?至少在某些情况下,未来的航空出口是否有可能成为另一个价值?如果在您的数据库中捕获此信息会不会更好,至少因为它在其他报告上下文中是可见的、可用的并且可维护的?再加上在处理上节省一点点。

    【讨论】:

    • 您要从哪里获得“Total Transit Target”的其他值? --> 如前所述,“Total Transit Target”将是“Transit Target 1”+“Transit Target 2”+“Transit Target 3”的总和
    • 谁在确定目标? --> 大客户经理设置了 KPI。对象的目标值会改变吗? --> 它是固定的。至少在某些情况下,未来的航空出口是否有可能成为另一个价值? --> 不知道你的意思。 case 函数会比 IF 更有用吗? --> 我认为 case 函数不支持浮点数据类型,因为我的目标运输天数为 1.5,即 1 天半。
    猜你喜欢
    • 1970-01-01
    • 2020-05-03
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多