COGNOS:在具有动态生成列的交叉表中将列与前一列进行比较

COGNOS: Compare column with previous column in a crosstab with dnamically generate columns

- 大家好,我需要根据条件更改值的颜色。如果前一列的值低于实际值,则该值应为蓝色,否则该值应为灰色。我正在使用交叉表并且列是动态生成的。是否可以在不更改为静态列的情况下以某种方式执行此操作?

补充说明:

如果我使用的列只包含一个属性,那么它就可以工作。但是如果我的列包含多个属性,那么它就不起作用了。

例如,我想查看过去 12 个月不同部门的销售额。如果该列包含一个以上的属性,那么 Cognos 会将当月所有部门的总和与上个月的总和进行比较,并用相同颜色为本月的所有值着色。

在 "Added Picture" 中,您可以看到我的查询结果作为交叉表的输出。

Added Picture

在我的查询中,我创建了一个数据项 "Style",如果实际月份较大,则显示 'a',如果实际月份较小,则显示 'b'。我将此数据项用于条件样式。

提前致谢

鉴于它是一个关系数据源,您可以查看您的数据库是否支持滞后和超前。如果是这样,您可以在 SQL 中使用某种类型来获取日期部分偏移量。这是针对 MSSQL:

的示例

http://www.sqlservertutorial.net/sql-server-window-functions/sql-server-lag-function/

进行 2 次查询并加入它们

第一个查询是你目前拥有的

第二个查询是查询 1 的副本,将用于获取前一个月。查询几乎是一样的,只是我们添加了一个数据项来连接上个月

这是按月份+1的数值计算的

New data item: [Prior Month] definition = [Month] +1

接下来,连接(构建第三个查询)基于键值,除了查询 1 中月份的部分设置为连接到月份 +1 的新数据项(让我们称其为前一个月) 来自查询 2(关系应该类似于 1.1 到 0.1,即 Q1 定义为 1.1,Q2 定义为 0.1)

这第三个查询数据项主要来自查询 1,除了我们希望查询 2 的指标数据代表上个月

现在你可以制作一个简单的条件样式来比较两者 如果前一列的值低于实际值,则该值应为蓝色,否则该值应为灰色

查看this/and单元测试 制作一个列表并在列表中并排查看指标值和上个月的值。然后试试条件样式

注意:您可能想要处理年份发生变化的第 1 月,有多种方法可以做到这一点。然而,这应该可以帮助您入门,如果您不关心第 1 个月,这应该可行。

让我知道进展如何!

补充说明:

  • 削减上月指标。一般来说,我的建议是避免删除内容(使用剪切,而不是删除)。这样您就不会在查询中丢失数据项(导致做额外的工作)。
  • 将交叉表中的一个指标移至左上角
  • Crosstab intersection 属性(行列之间有metrics/numbers的部分)设置条件样式。
  • 下一步,点击month/period。查找 属性 数据组,设置 properties 部分(这应该是一个复选框列表)。 Select 前一个月的指标(现在您可以使用此值,即使它不在交叉表布局中)。

仔细检查条件样式是否已设置。 上个月销售额的数据项仍在查询 3 中(根据您编辑事物的顺序,它可能会被意外删除)