or if you don't want update but just an output :
, coalesce(b.col2,a.col2) as col2
, coalesce(b.col3, a.col3) as col3
, CASE WHEN b.col1 is null then a.col4 else b.col4 end as col4
from Table1 a left join Table2 b on a.col=b.col1
the case expression for col4 is in case col4 is nullable in Table2 (ie. if a matching row exists and col4 is null in Table2 then null must be in the output)
for this one must test the non-existance of a matching row on "b.col1 is null"
I can explain it to you, but i can not understand it for you.