Я думаю cross apply
в значительной степени делает то, что вы хотите:
select t.uniqueid, v.dateofvisit
from t cross apply
(values (jan), (feb), (mar), (apr), (may), (jun)
) v(dateofvisit)
where v.dateofvisit is not null;
Вы можете добавить insert into visits (uniqueid, dateofvisit)
или into visits
к (соответственно) загрузке или создать таблицу visits
.