Предположительно, это потому, что вычисление nvl2()
дает целое число.Итак, попробуйте это:
SELECT nvl2(exposure_time_ms,
ROUND(exposure_time_ms / 1000.0,
CASE WHEN exposure_time_ms < 10000 THEN 1 ELSE 0 END
), 0
)::numeric(12,1) AS exposure_seconds
Я скажу, что на самом деле не имеет смысла округлять значения на основе величины.Вы должны сохранить значение «как есть» и использовать округление для представления - если это действительно необходимо.