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