【问题标题】:How to replace crosstab cell's value with a string如何用字符串替换交叉表单元格的值
【发布时间】:2015-11-15 09:13:51
【问题描述】:

我有列事实,它可以携带一些差异值:

 - Positive values - real values, need to be outputted as is
 - 0 is null, output as is
 - -1 - special value. Need to ouput "VAC" string in cell.
 - -2 - special value. Need to output "SICK" string in cell.

我试图用编辑尺寸来做,我用:

case 
    when [BaseEmp].[FACT_VALUE] = -1 then 'VAC'
    when [BaseEmp].[FACT_VALUE] = -2 then 'SICK'
    else to_char([BaseEmp].[FACT_VALUE])
end

但现在我看到错误:ORA-01722 无效数字(我认为,因为无法聚合字符串)。在列属性中,我选择“min”作为聚合函数。

如何用字符串替换我的特殊值?

【问题讨论】:

  • 更多关于你真正想要的例子会很有帮助。您想在聚合之后更改值吗?您可能需要使用子查询来获得所需的结果,然后将该结果集用于您的交叉表。
  • 我想在聚合后替换值(因为它不能聚合字符串)。我修改查询以获取字符串,但交叉表无法输出字符串。

标签: crosstab cognos


【解决方案1】:

您无需将值更改为 VAC、SICK 等。 您需要更改 DISPLAYED 值。

  1. 解锁 RS 中的挂锁。
  2. 选择单元格中的文本
  3. 将文本源设置为“报表表达式”
  4. 像这样写表达式

CASE
    WHEN cellValue() = -1 THEN 'VAC'
    WHEN cellValue() = -2 THEN 'SICK'
    WHEN cellValue() = 0 THEN ''
    ELSE cellValue()
END

【讨论】:

  • 在这里学到了一些新东西。谢谢朋友。
【解决方案2】:

我尝试考虑解决您的问题。我不太确定您的交叉表是什么样的,但考虑到您上面的参数,请尝试创建一个数据项,该数据项为您的事实保存您的案例条件。 前任。

case 
    when [BaseEmp].[FACT_VALUE] = -1 then 'VAC' <--- this will produce Any Error Characters
    when [BaseEmp].[FACT_VALUE] = -2 then to_char([BaseEmp].[FACT_VALUE]/0) <--- this will produce Missing Value Characters
    else to_char([BaseEmp].[FACT_VALUE]) <---- as is
end

然后将数据项的 Data Format 设置为 number 并设置属性的值,如下所示:

请试一试,希望它能以某种方式解决您的问题。干杯!

【讨论】:

  • 好的,我试试这个方法。但我有超过 2 个字符串值。我会尝试在那里使用其他字符。
  • 感谢您试一试。您可以设置的字符串值非常有限,因为它依赖于 values 字符属性。是的,您也可以尝试生成可以触发其他未使用的值字符的值。祝你好运!
【解决方案3】:

Nikita Kuhta 查看 Alexey 的 Baturin 的答案。我认为这是适当的方法。如果您解锁并选择单元格中的文本,只有一件事,所有单元格值都将被选择并受报表表达式的影响。交叉表中可能有多个列或其他事实项。如果是这样的话,你能做的就是

  1. 解锁报告。
  2. 选择要更改的交叉表单元格/交叉点。
  3. 将定义内容设置为是。
  4. 在交叉表单元格/交叉点中拖动布局计算,然后插入您的案例语句。

感谢一位朋友告诉我们定义的内容。 :D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-14
    • 2020-02-09
    • 1970-01-01
    • 2019-12-26
    • 2021-10-09
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    相关资源
    最近更新 更多