Денодо: Как агрегировать типы данных varchar? - PullRequest
0 голосов
/ 25 апреля 2018

Я создаю агрегат из столбца anstime в таблице представлений в Denodo и использую приведение для преобразования его в число с плавающей точкой, и оно работает только для тех чисел с периодом (пример 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

Может кто-нибудь, пожалуйста, помогите мне, как обрабатывать те без точки?

Ответы [ 3 ]

0 голосов
/ 25 апреля 2018

Я ценю тех, кто откликнулся на мою заботу. В итоге нам пришлось обратиться к нашим разработчикам, чтобы исправить тип данных столбца от varchar до float, а не делать обходной путь.

0 голосов
/ 15 июня 2018

Я предполагаю, что у вас есть значения в anstime, которые не являются числовыми, поэтому, почему отсутствие предиката where anstime like '%.%' вызывает сбой, как уже упоминалось в других комментариях.

Вы можете попробовать добавить промежуточное представление перед этим, которое удаляет любые нечисловые значения (оставляя, конечно, символ десятичной точки), и тогда это может позволить вам не использовать фильтр where anstime like '%.%'.

Возможно, функция REGEXP , которая, возможно, поможет там

0 голосов
/ 25 апреля 2018

Ваше предложение where anstime like '%.%' будет ограничивать возможные ответы местами, где в anstime есть период.Удалите это, если вы хотите разрешить все значения.

...