Я пытаюсь создать значения geom для новых записей, поступающих с полевых устройств, имеющих значения широты и долготы в двух полях (широта, долгота), для данного проекта с использованием следующего выражения:
UPDATE public.data_mds_import
SET geom=(
SELECT
st_force3d(st_setsrid(st_point(public.data_mds_import.longitude, public.data_mds_import.latitude),4326))
WHERE PUBLIC.data_mds_import.id_jobcode=220 /* ENTER ID_JOBCODE HERE */
);
У нас много поступающих полевых данных, и мне нужен оператор, в котором я могу просто изменить значение кода задания в выражении для каждого нового набора данных поля, который импортируется.
Проблема заключается в том, что для других заданий в В таблице, где jobcode! = 220, функция возвращает нулевые значения, т. е. удаляет значение geom, я теряю свои данные геометрии, поэтому я go имею несколько тысяч записей со значением геометрии до запуска функции, и только записи, где код задания = '220'.
Почему это происходит, оператор должен выбирать только записи, где код задания = 220, верно? Принимая во внимание, что он выбирает все записи и возвращает геометрию, где jobcode = 220, и ноль для каждой другой записи. Никакое действие не будет лучше, чем ноль.
Должен ли я использовать оператор case? Если это так, может кто-то, пожалуйста, помогите с таким утверждением, я попробовал несколько вариантов оператора case и не могу получить оператор для выполнения.