Я не совсем понимаю смысл итеративной логики c здесь: насколько я понимаю ваш вопрос, вы можете связать идентификатор типа и тип с каждым классом.
Может появиться табличное значение здесь удобно:
update mytable t
set type_id = x.type_id, type = x.type
from (
values
('Compact Cars', 1, 'sedan'),
('Midsize Station Wagons', 3, 'foo'),
('Minivan - 2WD', 2, 'pickup'),
('Minivan - 4WD', 2, 'pickup'),
) x(class, type_id, type)
where x.class = t.class
Если вам нужно выполнить большое количество транскодификаций, было бы проще сохранить их все в таблице, которую вы могли бы напрямую объединить в своем запросе.