首页 > 解决方案 > 在整个条目中插入带有案例的插入

问题描述

我正在创建一个要运行的脚本,它将把旧系统中的所有库存插入到新系统中。然而,旧系统有 1000 个错误的零件编号数据,我想在导入时忽略这些数据。

我已经尝试将整个选择封装在一个案例语句中并对该主题进行迭代。

这是一个相当大的数据集,所以为了简单起见,我将重要信息放入下面的代码中。

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 包含所有有效零件的列表,因此如果导入中的任何零件不匹配,请忽略并继续下一个零件。

标签: tsqlsql-insert

解决方案


您可以过滤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_nos 在 中是唯一的part_tbl,您可以使用 a 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

推荐阅读