I have new data in a Temp table, existing data in a Main table, and an Archive table which holds all current and historical data from Main.1.The Main table is updated from Temp table if existing record changed, else new records are inserted.2.The Archive table is updated from Main table if existing record changed, else new records are inserted.The exact same data is updated into both tables, so why do I need to check twice?Is there any way in which the following code can be refined, to check once, then update both Main and Archive at the same time?Update Main Table Code:MERGEINTO PlayerSkillsShort USING (SELECT Players.PlayersID, UpdatedSquad.Form, UpdatedSquad.Fatigue, UpdatedSquad.Date FROM UpdatedSquad INNER JOIN Players ON UpdatedSquad.PlayerIDCode = Players.PlayerIDCode) AS Upd ON PlayerSkillsShort.PlayersID = Upd.PlayersIDWHEN MATCHED AND (Upd.Form <> PlayerSkillsShort.Form OR Upd.Fatigue <> PlayerSkillsShort.Fatigue)THENUPDATE SET PlayerSkillsShort.Form = Upd.Form, PlayerSkillsShort.Fatigue = Upd.Fatigue, PlayerSkillsShort.date = Upd.dateWHEN NOT MATCHED THENINSERT (PlayersID, Form, Fatigue, Date)VALUES (PlayersID, Form, Fatigue, Date);
Update Archive Table Code:INSERT INTO ArchivePlayerSkillsShort (ArchivePlayersID, PlayerSkillsShortID, PlayersID, Form, Fatigue, Date)SELECT ArchivePlayers.ArchivePlayersID, PlayerSkillsShort.PlayerSkillsShortID, PlayerSkillsShort.PlayersID, PlayerSkillsShort.Form, PlayerSkillsShort.Fatigue, PlayerSkillsShort.DateFROM PlayerSkillsShort INNER JOIN ArchivePlayers ON PlayerSkillsShort.PlayersID = ArchivePlayers.PlayersID LEFT OUTER JOIN ArchivePlayerSkillsShort AS ArchivePlayerSkillsShort_1 ON PlayerSkillsShort.PlayerSkillsShortID = ArchivePlayerSkillsShort_1.PlayerSkillsShortID AND PlayerSkillsShort.Date = ArchivePlayerSkillsShort_1.DateWHERE (ArchivePlayerSkillsShort_1.PlayerSkillsShortID IS NULL)