Report COGNOS:在交叉表中将列与前一列进行比较,并使用DNAMICALY生成列

Report COGNOS:在交叉表中将列与前一列进行比较,并使用DNAMICALY生成列,report,cognos,cognos-10,cognos-bi,Report,Cognos,Cognos 10,Cognos Bi,- 大家好,我需要根据条件更改值的颜色。如果上一列的值低于实际值,则该值应为蓝色,否则该值应为灰色。我正在使用交叉表,列是动态生成的。是否有可能在不更改为静态列的情况下执行此操作 附加说明: 如果我使用的列只包含一个属性,那么它就可以工作。但是如果我的列包含多个属性,那么它就不起作用 例如,我想看看过去12个月不同部门的销售情况。如果该列包含多个属性,那么Cognos会将当前月份所有部门的总和与上个月的总和进行比较,并使用相同的颜色显示本月的所有值 在“添加的图片”中,您可以看到我的查询结果作

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

附加说明:

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

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

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

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


提前感谢

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


进行两次查询并加入它们

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

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

这是基于月份+1的值

New data item: [Prior Month] definition = [Month] +1
接下来,联接(构建第三个查询)基于键值,除了查询1中月份的部分被设置为联接查询2中月份+1(我们称之为上一个月)的新数据项之外(关系应该类似于1.1到0.1,即Q1定义为1.1,Q2定义为0.1)

第三个查询数据项主要来自查询1,但我们希望查询2中的度量数据表示上一个月

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

查看此/和单元测试 制作一个列表,并在列表中并排查看度量值和上个月的值。然后尝试条件样式

注意:您可能希望处理年份发生变化的第1个月,您可以使用多种方法来处理。然而,这应该让你开始,如果你不关心第1个月,这应该是工作

让我知道进展如何

附加说明:

  • 削减上月指标。一般来说,我的建议是,避免删除内容(使用剪切,而不是删除)。这样就不会丢失查询中的数据项(导致额外的工作)
  • 将交叉表中的一个度量移动到左上角
  • 交叉表相交属性(在行和列之间具有度量/数字的部分)设置条件样式
  • 接下来,单击月份/期间。查找属性组中的数据,设置属性部分(这应该是一个复选框列表)。选择上个月的指标(现在您可以使用此值,即使它不在交叉表布局中)
再次检查是否设置了条件样式。
上月销售额的数据项仍在查询3中(可能会意外删除,具体取决于您编辑内容的顺序)

处理演示文稿的方法有很多,您是否希望使用基于SQL函数的条件样式来确定是否应显示基于属性的度量?你能再告诉我一点吗?这是关系元数据(VSDMR,等等)?你好,VAI Jason,这是关系元数据。我的查询包含3个数据项和一个筛选器。数据项包括类别、月份和值。我有一个过滤器作为[G_BIS_PART]的提示,其中包含像“201911”这样的值,它过滤过去11个月的数据。过滤器:[G_BIS_PART]介于(to_char(add_months)(to_char(#prompt('p_G_BIS_PART''int'));'yyyyymm');-11);'yyyyymm'))和(to_char(add_months(to_months)(to_char(#prompt('p_G_BIS''int'));'int'));'yyyyymm')首先感谢您的解决方案。只要我使用insert将上个月的值插入交叉表中,它就会工作。有没有什么方法可以解决这个问题,而不用将上个月的数据插入交叉表?当我省略它时,我收到一条错误消息:如果该项存在于查询中,但未在布局中引用,请将其添加到属性列表中。谢谢。嗨,Kre,调整了上面的答案来处理布局问题。请看附加说明。Shi Jason,我也调整了上面的问题。谢谢你的努力!!什么是a,b,c?对于下面的示例,我将其称为category使用函数total来隔离数据,即total([category]的销售额),通过这种方式,您可以在正确的级别进行比较Hi Jason,我现在通过在交叉表中隐藏上个月的指标来解决它!谢谢你的努力。