COGNOS:将列与交叉表中的上一列进行比较,并动态生成列

时间:2019-12-05 14:15:01

标签: report cognos cognos-10 cognos-bi

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

enter image description here

其他说明:

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

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

在“添加的图片”中,您可以看到查询结果作为交叉表的输出。

Added Picture

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

预先感谢

2 个答案:

答案 0 :(得分:1)

进行2个查询并加入他们

第一个查询是您当前拥有的

第二个查询是查询1的副本,将用于获取上个月。查询几乎相同,除了我们添加了一个数据项以连接到上个月

这是基于+1月份的值

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

接下来,联接(构建第三个查询)基于键值,除了查询1中月份的那一部分被设置为JOIN到新数据项中,用于+1个月(让我们调用上个月)查询2(关系应为1.1到0.1,即Q1定义为1.1,Q2定义为0.1)

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

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

查看此/和单元测试 列出并并列查看指标和上个月的值。然后尝试条件样式

注意:您可能要处理年份变化的第1个月,有多种方法可以执行此操作。但是,这应该可以让您入门,并且如果您不关心第1个月,那么应该可以。

让我知道怎么回事!

其他说明:

  • 剪切前一个月指标。一般来说,我的建议是避免删除内容(使用剪切而不是删除)。这样,您就不会丢失查询中的数据项(不会做额外的工作)。
  • 将交叉表中的一个指标移动到左上角
  • Crosstab相交属性(具有行和列之间的度量/数字的部分)设置条件样式。
  • 接下来,单击月份/期间。查找数据的属性组,设置 properties 部分(这应该是复选框列表)。选择上个月的指标(现在,即使不在交叉表布局中,您也可以使用该值)。

再次检查是否已设置条件样式。 前一个月销售的数据项仍在查询3中(根据您编辑商品的顺序,它可能会意外删除)

答案 1 :(得分:0)

给出一个关系数据源,您可以看到您的数据库是否支持滞后和提前。如果是这样,您可以在SQL中使用某种类型来获取您的datepart偏移量。这是针对MSSQL的示例:

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