i hv return logic but i m not sure about it
-- Insert duplicate
;with CTE (id,name,age) as
(
Select id,name,age from stage
Intersect
Select id,name,age from master
)
INSERT INTO History
Select id,name,age from cte
-- New record
insert into Master(id,name,age)
Select s.id,s.name,s.age
from stage s
left join master M
on M.id=s.id
where M.id is null
-- Update Existing
;with CTE (id,name,age) as
(
Select id,name,age from stage
Except
Select id,name,age from master
)
Update M
SET M.name =C.name
,M.age = C.age
FROM Master M JOIN CTE C
on M.id=c.id