A case
выражение возвращает один тип. Это должно быть между numeric(10, 0)
и numeric(10, 3)
. Последний является более общим, поэтому он выберет это.
Если вы хотите контролировать, как будет выглядеть результирующий набор, преобразуйте значение в строку:
select (case when col = 'Gallons'
then cast(cast(Oct as numeric(10, 0)) as varchar(255))
else cast(cast(Oct as numeric(10, 3)) as varchar(255))
end) as Oct
from (select 'Gallons' as col, 225.00 as Oct) a
Вы также можете сделать это, используя функцию str()
.