如何将 SQL 语句转换为等效的 Cognos 查询计算?

How to convert SQL statement to equivalent Cognos query calc?

我正在像这样构建一个交叉表:

并且需要改为转换为列表。给我带来麻烦的部分是将反馈到 Act 和 Direct Cost 的 v_IT 或 BU 的分组转换为列表的 4 个单独字段,即 'IT Act'、'IT Direct Cost'、'BU Act',以及 BU 直接成本。我不确定如何使用这两个数据项对这些字段进行计算。

我认为 SQL 应该是这样的:

Select Act$ from 'mytable' where v_ITorBU = 'IT'

至少第一个 'IT Act' 数据项。

v_IT 或 BU 有两个值 'IT' 和 'BU'.

我试过了

Case
When v_ITorBU = 'IT'
then act$
end

但这只给我整体行为价值,而不是专门针对 IT 的价值。 我需要特定的 IT 实际值以及 BU 实际值。

有没有人知道如何将其纳入 Cognos 查询计算?

v_IT 或 BU 的分组向下馈入 Act 和 Direct Cost 到列表的 4 个单独字段,即 'IT Act'、'IT Direct Cost'、'BU Act'和 BU 直接成本。

去查询 从工具箱添加数据项

创建定义表达式,例如,这将用于 [IT 法案]

IF( [v_IT or BU]  = 'IT Act' )Then([Act$])Else(0)

重复此过程
  • IT 直接成本
  • BU 法案
  • BU 直接成本

同样为成本指标重复这 4 个数据项

记得检查属性以实现正确的聚合

这里是 SQL.

select [Budget Category]
, [v_Cost Cat Consolidation]
, sum(case when [v_IT or BU] = 'IT'
        then [Act $]
        else 0
      end) as 'IT Act'
, sum(case when [v_IT or BU] = 'IT'
        then [Direct Cost]
        else 0
      end) as 'IT Direct Cost'
, sum(case when [v_IT or BU] = 'BU'
        then [Act $]
        else 0
      end) as 'BU Act'
, sum(case when [v_IT or BU] = 'BU'
        then [Direct Cost]
        else 0
      end) as 'BU Direct Cost'
from MyTable
where {somefilters}
group by [Budget Category]
, [v_Cost Cat Consolidation]

因此 Cognos 中的数据项表达式可能类似于...

case 
  when [v_IT or BU] = 'IT'
    then [Act $]
  else 0
end

...并且您需要确保对其使用 Total 聚合函数。

如果您这样做了并且数字看起来不正确,请在问题陈述中添加一些细节。

这也可以使用 hnoel 提出的 IF-THEN-ELSE 方法来完成。