Я пытаюсь переместить данные из одной таблицы в другие две таблицы в зависимости от того, выполнено ли какое-либо условие.Перемещение данных из таблицы в несколько таблиц в зависимости от условия
Это то, что я пытался с:
WITH moved_rows AS (
DELETE FROM rac_temp_import
WHERE depo IN ('0281752') AND tura IN ('026','094','097')
RETURNING *, (CASE WHEN parcelno IN(
SELECT parcelno FROM rac_import
UNION
SELECT parcelno FROM rac_dupli
) THEN true ELSE false END) AS dupli
)
INSERT INTO rac_dupli
SELECT FROM moved_rows WHERE dupli = true
INSERT INTO rac_import
SELECT FROM moved_row WHERE dupli = false
Но, насколько я понимаю, только один INSERT
оператора может существовать после WITH
и я попытался с помощью CASE
после, но это не сработало.
Используйте таблицу (темп) вместо КТР. Или преобразовать CTE в (temp). – wildplasser
Вам не нужно сначала установить флаг, а затем использовать его; вы можете перенести условия exist() на вставку в части {rac_dupl, rac_import}, где они принадлежат. – wildplasser