Вы не рассматриваете определение 'годовой недели':
Согласно Википедии: Неделя первого года - это неделя, содержащая первый четверг года, или неделя, содержащая 4 января.или либо неделя, которая начинается с 29 декабря по 4 января.
Так, если год начинается с недели 52 или 53, то это трейлинг предыдущей недели предыдущего года.
таким образом, у вас есть:
set dateformat ymd
set datefirst 1
declare @data as datetime
declare @year as int
set @data = cast('2017-01-01' as datetime)
set @year = case when datepart(iso_week,@data) >= 52 and month(@data) = 1
then year(@data)-1
when datepart(iso_week,@data) = 1 and month(@data) = 12
then year(@data)+1
else year(@data) end
select concat (@year, right('0'+cast(datepart(iso_week,@data) as varchar(6)),2))
результат этого 201652
edit: обновлено, чтобы иметь всегда двузначную неделю