如何用字符串替换交叉表单元格的值

How to replace crosstab cell's value with a string

我有一个fact列,它可以携带一些不同的值:

 - 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 无效数字(我认为,因为无法聚合字符串)。在列属性中,我 select "min" 作为聚合函数。

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

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

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

然后将数据项的数据格式设置为数字并设置属性值如下:

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

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

  1. 在 RS 中解锁挂锁。
  2. Select 单元格中的文字
  3. 将文本源设置为 "Report Expression"
  4. 像这样写表达式

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

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

  1. 解锁报告。
  2. Select 您要更改的交叉表 cell/intersection。
  3. 将定义内容设置为是。
  4. 在交叉表中拖动布局计算 cell/intersection,然后插入您的 case 语句。

感谢朋友告诉be关于定义内容。 :D