如何用字符串替换交叉表单元格的值
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 值。
- 在 RS 中解锁挂锁。
- Select 单元格中的文字
- 将文本源设置为 "Report Expression"
- 像这样写表达式
CASE
WHEN cellValue() = -1 THEN 'VAC'
WHEN cellValue() = -2 THEN 'SICK'
WHEN cellValue() = 0 THEN ''
ELSE cellValue()
END
Nikita Kuhta 查看 Alexey 的 Baturin 的回答。我认为这是合适的方法。只有一件事,如果您解锁并 select 单元格中的文本,所有单元格值都将被 select 编辑并受报表表达式的影响。交叉表中可能有多个列或其他事实项。如果是这样的话,你能做的就是
- 解锁报告。
- Select 您要更改的交叉表 cell/intersection。
- 将定义内容设置为是。
- 在交叉表中拖动布局计算 cell/intersection,然后插入您的 case 语句。
感谢朋友告诉be关于定义内容。 :D
我有一个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 值。
- 在 RS 中解锁挂锁。
- Select 单元格中的文字
- 将文本源设置为 "Report Expression"
- 像这样写表达式
CASE
WHEN cellValue() = -1 THEN 'VAC'
WHEN cellValue() = -2 THEN 'SICK'
WHEN cellValue() = 0 THEN ''
ELSE cellValue()
END
Nikita Kuhta 查看 Alexey 的 Baturin 的回答。我认为这是合适的方法。只有一件事,如果您解锁并 select 单元格中的文本,所有单元格值都将被 select 编辑并受报表表达式的影响。交叉表中可能有多个列或其他事实项。如果是这样的话,你能做的就是
- 解锁报告。
- Select 您要更改的交叉表 cell/intersection。
- 将定义内容设置为是。
- 在交叉表中拖动布局计算 cell/intersection,然后插入您的 case 语句。
感谢朋友告诉be关于定义内容。 :D