一列包含以下 case 语句,当呈现数据时,负十进制值出现错误。
正确的值 = -0.9但它显示为.-9 我尝试通过更改数据格式等进行操作,但没有得到正确的结果
我想以某种方式操纵数据并将其显示为-0.9
当 cast([Relational Layer].[Amount],varchar(40)) <> '-2000.00' then cast([Relational Layer].[Amount],varchar(40)) else 'Not Available' end
我相信您面临演员转换问题。我看到了几种解决方案。在您进一步阅读之前,请仔细检查报告中列的格式设置......似乎您应用了一种格式,因为它是一个文本字段,因为它是一个文本字段。
不按任何顺序
看起来您正在尝试转换为 varchar,以便您可以使用“不可用”。您可能想尝试不同的方法。更改您的 case 表达式以进行纯数学运算,而无需任何 varchar 转换。而且我猜您可能正在报告工作室中显示,因此在报告工作室中并使用报告工作室您可以设置一个条件变量/样式,在显示该值的同时具有 if -2000 或任何测试条件将其设置为“不可用”
您可以在查询主题中创建两列……一列有您的案例陈述,但仅在“不可用”时填充,另一列纯数字并且仅在它是实际值时填充。在报告中,您还可以在列中使用变量/条件样式来显示一列或另一列,基于测试不可用...如果不可用则显示不可用列,否则显示数字列。
有一个返回正确值的纯数字 case 表达式。但在 case 表达式中让它返回 null 而不是“不可用”。在报告中,我相信有一种直接的方法可以在 null 时默认一个值,或者您可以再次使用条件样式/变量来为您执行此操作。
条件样式/变量对于在显示器上进行疯狂的替换/评估非常方便,它们可以逐行操作。