全部, 我正绞尽脑汁试图找出解决这个问题的最佳方法。基本上我想比较两个表并在满足某些条件时插入现有记录的副本 - 例如,如果名为“OrderComplete”的列是“是”或者当前记录在插入表中不存在。我当时想要使用IF语句或CASE,但我仍然坚持使用IF部分 - 以下是我想要运行的两个查询,但是有一段时间编写IF语句。有什么想法或想法吗?
两个查询都在下面工作,但我需要一个查找重复项的条件,如果insert表的项“OrderComplete”设置为yes,则只需要复制。我可以放一个简单的等式,但想在IF区域插入一个SELECT或更复杂的东西。也许你不能比较IF语句中的两个表,现在只是难倒。
IF ?????
BEGIN
use [PaperDB]
INSERT INTO dbo.ORDERED_PARTS_TABLE
([OrderPN]
,[OldPN]
,[OldPN2]
,[PartDescription]
,[WhereUsed]
,[LocationStored]
,[LocationDescription]
,[AlternateLocationStored]
,[AlternateLocationDescription]
,[QuantityOnHand]
,[ReorderQuantity]
,[QuantityToOrder]
,[Category]
,[LastUpdated]
,[spare]
,[spare2]
,[spare3])
SELECT s.orderpn, s.oldpn, s.oldpn2, s.partdescription, s.whereused, s.locationstored,
s.locationdescription, s.alternatelocationstored, s.alternatelocationdescription,
s.quantityonhand, s.reorderquantity, s.reorderquantity - s.QuantityOnHand , s.category,
s.lastupdated, s.QuantityOnHand , s.ReorderQuantity , s.Spare3
FROM dbo.PARTS_ORDER_TABLE as s
LEFT OUTER JOIN
ORDERED_PARTS_TABLE as t
on s.OrderPN = t.OrderPN
WHERE (NOT EXISTS (SELECT *
from ORDERED_PARTS_TABLE
where s.OrderPN = t.OrderPN))
END
ELSE
BEGIN
use [PaperDB]
INSERT INTO dbo.ORDERED_PARTS_TABLE
([OrderPN]
,[OldPN]
,[OldPN2]
,[PartDescription]
,[WhereUsed]
,[LocationStored]
,[LocationDescription]
,[AlternateLocationStored]
,[AlternateLocationDescription]
,[QuantityOnHand]
,[ReorderQuantity]
,[QuantityToOrder]
,[Category]
,[LastUpdated]
,[spare]
,[spare2]
,[spare3])
SELECT s.orderpn, s.oldpn, s.oldpn2, s.partdescription, s.whereused, s.locationstored,
s.locationdescription, s.alternatelocationstored, s.alternatelocationdescription,
s.quantityonhand, s.reorderquantity, s.reorderquantity - s.QuantityOnHand , s.category,
s.lastupdated, s.QuantityOnHand , s.ReorderQuantity , s.Spare3
FROM dbo.PARTS_ORDER_TABLE as s
LEFT OUTER JOIN
ORDERED_PARTS_TABLE as t
on s.OrderPN = t.OrderPN
WHERE s.OrderPN = t.OrderPN AND t.OrderComplete = 'yes'
END
答案 0 :(得分:0)
我不太清楚我理解你的整个问题,但是你不能使用带有IF的EXISTS来完成你需要的东西吗?
IF EXISTS (SELECT * FROM dbo.ORDERED_PARTS_TABLE WHERE whatever='??') THEN
答案 1 :(得分:0)
我建议使用 MERGE 功能。
您可以设置匹配条件并执行更新/插入/删除作为基于单个集合的操作的一部分。
你可以在这里运行的很好的例子:
答案 2 :(得分:0)
另一种方法可能是从两个表中执行选择。
Insert into TableC(
Col1,
Col2
)
Select
a.Col1,
a.Col2
From TableA a
join TableB b on b.ID = a.ID
--expand this to express the full relationship between the tables.
where a.OrderComplete = 'yes' -- This will give you rows where OrderComplete = Yes
or b.ID is null -- This will add also return results where TableB is missing rows.
最终会将所有内容插入到TableC中。