I think this could do the job...
set nocount on
SET ROWCOUNT 1000
declare @rowcount int, @batchcount int, @rowsupdated int
declare @LastKey nvarchar(341)
select @rowcount = 1,@batchcount = 0, @rowsupdated = 0, @LastKey = ''
while @rowcount > 0
begin
begin tran
update MyTable
set NewZip = ZipCode,
@LastKey = NameKey
where NewZip is NULL
and NameKey >= @LastKey
set @rowcount = @@rowcount
select @rowsupdated = @rowsupdated + @rowcount
if @rowcount > 0 select @batchcount = @batchcount + 1
commit
end
*If NameKey were unique, we could use ">" instead of ">=" .