Денодо: Как агрегировать типы данных varchar?
Я создаю агрегат из столбца 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 ответа
Я думаю, у вас есть значения в anstime, которые не являются числовыми, поэтому почему бы не иметь where anstime like '%.%'
Предикат вызывает сбой, как уже упоминалось в других комментариях.
Вы можете попробовать добавить промежуточное представление перед этим, которое удаляет любые нечисловые значения (оставляя, конечно, символ десятичной точки), и тогда это может позволить вам не использовать where anstime like '%.%'
фильтр.
Возможно, функция REGEXP, которая могла бы помочь там
Ваш where anstime like '%.%'
пункт собирается ограничить возможные ответы местами, где у anstime есть период. Удалите это, если вы хотите разрешить все значения.
Я ценю тех, кто откликнулся на мою заботу. В конце концов нам пришлось обратиться к нашим разработчикам, чтобы исправить тип данных столбца от varchar до float, а не делать обходной путь.