После вставки в таблицу цифры после десятичной точки изменяются на 0 - PullRequest
0 голосов
/ 24 октября 2018

При выборе столбцов SELECT в Vertica отображаются обычные числовые значения:

SELECT nvl2 (jection_time_ms, ROUND (jection_time_ms / 1000, CASE WHENjection_time_ms <10000 THEN 1 ELSE 0 END), 0) :: numeric (12,1) ASjection_seconds </p>

1

Но когда я вставляю то же самое в таблицу, которая имеет экспозицию столбцас типом секунд NUMERIC (12,1), он меняет все цифры после десятичной точки на 0:

2

1 Ответ

0 голосов
/ 24 октября 2018

Предположительно, это потому, что вычисление 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

Я скажу, что на самом деле не имеет смысла округлять значения на основе величины.Вы должны сохранить значение «как есть» и использовать округление для представления - если это действительно необходимо.

...