如何将 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
方法来完成。
我正在像这样构建一个交叉表:
并且需要改为转换为列表。给我带来麻烦的部分是将反馈到 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
方法来完成。