Вставить в кейс на всю запись - PullRequest
0 голосов
/ 30 октября 2019

Я создаю скрипт для запуска, который возьмет все запасы в старой системе и вставит в новую систему. Однако в старой системе есть тысячи ошибочных данных с номерами деталей, которые я хочу игнорировать при импорте.

Я пытался инкапсулировать весь выбор в операторе case и итерации этой темы.

Это довольно большой набор данных, поэтому для простоты я взял жизненно важную информацию в приведенный ниже код.

INSERT INTO [LOT_TBL]
(
    Part_No   
    Total_Stock
)

--Ignore an insert if Part_No_Old NOT IN (SELECT Part_No from PART_TBL)

SELECT
    Part_No_Old
    Total_Stock
FROM OLD_ERP
WHERE Total_Stock > 0

PART_TBL в новой системе содержит список всех допустимых частей, поэтому, если таковые имеютсяпри импорте не совпадают, игнорируют и переходят к следующему.

1 Ответ

1 голос
/ 30 октября 2019

Вы можете фильтровать с помощью exists:

insert into [lot_tbl] (part_no, total_stock)
select
    part_no_old,
    total_stock
from old_erp o
where 
    total_stock > 0
    and exists (
        select 1 from part_tbl p where p.part_no = o.part_no_old 
    )

Или, если part_no s уникальны в part_tbl, вы можете использовать join:

insert into [lot_tbl] (part_no, total_stock)
select
    o.part_no_old,
    o.total_stock
from old_erp o
inner join part_tbl p on p.part_no = o.part_no_old 
where o.total_stock > 0
...