【问题标题】:Formatting a value to two decimal places, converting to string and then combining with a different column with like data将值格式化为两位小数,转换为字符串,然后与具有相似数据的不同列组合
【发布时间】:2015-07-02 19:41:13
【问题描述】:

我遇到了这样的问题......

Cast(cast(low_value as decimal(8,2)) as varchar) +' - '+ Cast(cast(high_value as decimal(8,2)) as varchar)

它似乎有时会起作用,但有时却不起作用。我得到一个数据类型转换是不可能的。

还有其他方法可以处理这种格式吗?我也尝试使用转换功能,但同样失败。

【问题讨论】:

  • 我假设您在 low_value 或 high_value 为空时收到错误?在这些情况下,您希望显示什么?
  • 我认为是这种情况,但我随后添加了一个 case 语句,其中 when 检查是低还是高然后为空。它可以工作,但有些行会阻止它完全工作,我不知道为什么。
  • low_value 和 high_value 分别是什么数据类型?你得到了什么实际错误?
  • 想通了。看起来比 8 容纳的值更大。没想到会出现流氓值,所以没想过要检查

标签: sql sap-iq


【解决方案1】:

抱歉在这里而不是在 cmets 中发布它,但我没有足够的代表发表评论。我认为您需要使用合并,这应该可以解决您的问题。

例子:

coalesce(low_value,0) 现在当你得到一个空值作为低值时,它会取0而不是空,所以转换应该不会出错。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 2023-03-03
    • 2019-06-08
    相关资源
    最近更新 更多