Here is a guess using a LEFT JOIN and a MERGE statement:-- Set up sample dataDECLARE @ItemAccounts TABLE (ItemCode INT, AccountCode VARCHAR(10), ItemCodeAccount VARCHAR(10))INSERT @ItemAccountsVALUES(123, 'ABBC', 'A123'),(123, 'ZZZY', 'A123')DECLARE @poitmvnd TABLE (item_no INT, Vend_no CHAR(2), vend_item_no VARCHAR(10))INSERT @poitmvndVALUES(123, 'ZZ', 'A123')DECLARE @cicmpy TABLE (AccountCode VARCHAR(10), Vend_no CHAR(2))INSERT @cicmpyVALUES('ABBC', 'AB'),('ZZZY', 'ZZ')-- Pre DeleteSELECT *FROM @ItemAccounts-- Do actual deleteDELETE IAFROM @ItemAccounts AS IALEFT OUTER JOIN( SELECT c.* FROM @poitmvnd AS p INNER JOIN @cicmpy AS c ON p.Vend_no = c.Vend_no) AS tON IA.AccountCode = T.AccountCodeWHERE T.AccountCode IS NULL-- Post deleteSELECT *FROM @ItemAccountsUsing a MERGE statement:-- Do actual deleteMERGE @ItemAccounts AS TargetUSING ( SELECT c.* FROM @poitmvnd AS p INNER JOIN @cicmpy AS c ON p.Vend_no = c.Vend_no ) AS Source ON Source.AccountCode = Target.AccountCodeWHEN NOT MATCHED BY SOURCE THEN DELETE;