0

我正在从 Denodo 的视图表中的 anstime 列创建聚合,我正在使用 Cast 将其转换为浮点数,它仅适用于带句点的数字(例如 123.123),但不适用于没有句点的数字(示例 123)。这是我的代码,仅适用于带有句点的数字:

SELECT row_date,
    case
        when sum(cast(anstime as float)) is null or sum(cast(anstime as float)) = 0
        then 0
        else sum(cast(anstime as float))
    end as xans
FROM table where anstime like '%.%'
group by row_date

有人可以帮我处理那些没有期限的吗?

4

3 回答 3

0

我的猜测是你在 anstime 中有不是数字的值,因此为什么没有where anstime like '%.%'谓词会导致失败,正如其他评论中提到的那样。

您可以尝试在此之前添加一个中间视图,以去除任何非数值(当然保留小数点字符),这样您就可以不必使用 where anstime like '%.%'过滤器。

也许REGEXP功能可能会帮助那里

于 2018-06-15T05:53:20.793 回答
0

您的where anstime like '%.%'条款将限制对 anstime 中有句点的地方的可能响应。如果您想允许所有值,请删除它。

于 2018-04-24T21:04:34.367 回答
0

我感谢那些回应我关注的人。最后,我们不得不联系我们的开发人员,将列的数据类型从 varchar 修复为 float,而不是解决问题。

于 2018-04-25T14:47:05.950 回答