Поскольку в вашей таблице результатов, по-видимому, есть только три dim-столбца, самым простым будет выражение case:
select
c.id_file
, [type]
, case c.cpattr
when 'dim01' then r.dim01
when 'dim02' then r.dim02
when 'dim03' then r.dim03
else ''
end [data]
from
configs c
left join results r
on c.id_file = r.id_file
Отредактировано, чтобы добавить:
Поскольку существует неопределенное количество тусклых столбцов, может быть немного лучше:
select
c.id_file, c.type, o.data
from
_configs c
left join
(
select * from _results
unpivot
(
[data] for cpattr in (dim01, dim02, dim03, ...)
) as [output]
) as [o]
on c.id_file = o.id_file
and c.cpattr = o.cpattr
Вы все еще должны определить все затронутые затемненные столбцы, но вам нужно сделать это только один раз, а не дважды. Это также выдаст ошибку, если какой-либо из dim-столбцов будет удален или переименован, хотя он не будет заполняться новыми dim-столбцами. Не уверен, что это можно сделать.