您好我不确定如何修改此查询以从TURGET中删除SOURCE中不再存在的记录。另一个棘手的问题是,如果记录的T.TransactionDate小于90天,它只能从TARGET中删除记录。我知道这是一个不匹配的源,但我不知道如何构建查询的其余部分。任何人都可以帮我这个部分吗?
MERGE TransactionData AS T
USING (SELECT * FROM Temp_TransactionData) AS S
ON (T.Transaction_ID = S.Transaction_ID AND T.Trans_Line_ID = S.Trans_Line_ID)
WHEN NOT MATCHED BY TARGET
THEN INSERT(Account_ID, Class_ID, Company_ID, Company_Name, Design_ID, Item_ID, ItemCount, Invoice_ID, Rate, Amount, Transaction_ID, Trans_Line_ID, Transaction_Date, Transaction_Type, LicensorCode_ID, Property) VALUES(S.Account_ID, S.Class_ID, S.Company_ID, S.Company_Name, S.Design_ID, S.Item_ID, S.ItemCount, S.Invoice_ID, S.Rate, S.Amount, S.Transaction_ID, S.Trans_Line_ID, S.Transaction_Date, S.Transaction_Type, S.LicensorCode_ID, S.Property)
WHEN MATCHED
THEN UPDATE SET T.Account_ID = S.Account_ID, T.Class_ID = S.Class_ID, T.Company_ID = S.Company_ID, T.Company_Name = S.Company_Name, T.Design_ID=S.Design_ID, T.Item_ID=S.Item_ID, T.ItemCount=S.ItemCount, T.Invoice_ID=S.Invoice_ID, T.Rate=S.Rate, T.Amount=S.Amount, T.Transaction_ID=S.Transaction_ID, T.Trans_Line_ID=S.Trans_Line_ID, T.Transaction_Date=S.Transaction_Date, T.Transaction_Type=S.Transaction_Type, T.LicensorCode_ID=S.LicensorCode_ID, T.Property=S.Property;
答案 0 :(得分:1)
对于使用T.TransactionDate 90天或更早的合并删除事务,请使用以下内容。
WHEN NOT MATCHED BY SOURCE and T.TransactionDate < DATEADD(d, -90, current_timestamp)
THEN DELETE
答案 1 :(得分:0)
MERGE TransactionData AS T
USING (SELECT * FROM Temp_TransactionData) AS S
ON (T.Transaction_ID = S.Transaction_ID AND T.Trans_Line_ID = S.Trans_Line_ID)
WHEN NOT MATCHED BY TARGET
THEN INSERT(Account_ID, Class_ID, Company_ID, Company_Name, Design_ID, Item_ID, ItemCount, Invoice_ID, Rate, Amount, Transaction_ID, Trans_Line_ID, Transaction_Date, Transaction_Type, LicensorCode_ID, Property) VALUES(S.Account_ID, S.Class_ID, S.Company_ID, S.Company_Name, S.Design_ID, S.Item_ID, S.ItemCount, S.Invoice_ID, S.Rate, S.Amount, S.Transaction_ID, S.Trans_Line_ID, S.Transaction_Date, S.Transaction_Type, S.LicensorCode_ID, S.Property)
WHEN MATCHED
THEN UPDATE SET T.Account_ID = S.Account_ID, T.Class_ID = S.Class_ID, T.Company_ID = S.Company_ID, T.Company_Name = S.Company_Name, T.Design_ID=S.Design_ID, T.Item_ID=S.Item_ID, T.ItemCount=S.ItemCount, T.Invoice_ID=S.Invoice_ID, T.Rate=S.Rate, T.Amount=S.Amount, T.Transaction_ID=S.Transaction_ID, T.Trans_Line_ID=S.Trans_Line_ID, T.Transaction_Date=S.Transaction_Date, T.Transaction_Type=S.Transaction_Type, T.LicensorCode_ID=S.LicensorCode_ID, T.Property=S.Property;
WHEN NOT MATCHED BY SOURCE AND T.TransactionDate <90
THEN DELETE