Я думаю, что, возможно, пытаюсь сделать слишком много одним запросом, и это сводит меня с ума.
У меня есть две таблицы: Source и Zip_Code.Исходная таблица имеет поле почтового индекса, которое может состоять из 3 или 5 цифр.
Если это 3 цифры, мне нужно присоединиться к 3-значному полю таблицы zip_code и установить в поле source_zip Source соответствующую 5-значную запись таблицы zip_code.
Если это 5 цифр, мне нужно связать 5-значное поле таблицы zip_code (чтобы убедиться, что это действительный почтовый индекс), а затем поместить это 5-значное число в поле источника new_zip.
Я уже понимаю, что вы не можете манипулировать чем-то, что обновляете, поэтому используете самообъединение для манипулирования копией.Теперь мне нужно создать Source2 и объединить таблицы Source1, Source2 и Zip_Code.
UPDATE SOURCE1
INNER JOIN SOURCE2 ON SOURCE1_UID = SOURCE2_UID
INNER JOIN ZIP_CODE ON SOURCE1_ZIP =
(
SELECT
(
CASE WHEN LENGTH(SOURCE1.ZIP <4
THEN ZIP_CODE.3_DIGIT
ELSE ZIP_CODE.5_DIGIT
END
)
FROM SOURCE2
)
SET SOURCE1.NEW_ZIP =
(
CASE WHEN LENGTH(SOURCE1.ZIP <4
THEN ZIP_CODE.3_DIGIT
ELSE ZIP_CODE.5_DIGIT
END
)
Я знаю, что делаю что-то не так, но у меня есть блок относительно того, где.