Целое число, а не DECIMAL

Почему я получаю Integer в этом выпуске (я ожидаю, что DECIMAL) Базовый вкус базы Teradata Что я делаю неправильно?

CASE WHEN sub_e.LSD IS NOT NULL THEN CAST(baba.amt AS DECIMAL(10,2)) ELSE 0 END - ( SUM( CASE WHEN sub_e.LSD IS NOT NULL THEN ch.actv_amt * (1 + ch.tax_percent_rate/100) ELSE 0 END ) ) + CASE WHEN sub_e.LSD IS NOT NULL THEN COALESCE(sub_e.PWC, 0) ELSE 0 END AS ODTS, 

Если TAX_RATE_PERCENT не определяется как DECIMAL достаточной точности, то ваш расчет (1 + TAX_RATE_PERCENT/100) будет неправильным.

SELECT 6/100; -- 0 (zero - Integer division)

SELECT 6.0/100; -- 0.1 (rounding rules based on precision of numerator)

SELECT 6.00/100; -- 0.06 (expected answer)

SELECT CAST(6 AS DECIMAL(2,1))/100; -- 0.1 (rounding rules based on precision of numerator)

SELECT CAST(6 AS DECIMAL(3,2))/100; -- 0.06 (expected answer)

Подробнее о поведении типа данных DECIMAL в Teradata см. Объяснение Dnoeth здесь .

проблема заключалась в определении столбца внутри таблицы, где результат запроса выше делает INSERT