Вам необходимо использовать unpivot
для таблицы Assembly
, чтобы имя столбца соответствовало значению строки, а затем сделать join
с таблицей FCD
.
Я бы использовал CROSS APPLY
, чтобы сделать unpivot
.
SELECT f.ID_Assembly,t1.id
FROM (
select v.* from Assembly CROSS APPLY
(
VALUES
(ID_Assembly,Col_1,'Col_1'),
(ID_Assembly,Col_2,'Col_2'),
(ID_Assembly,Col_3,'Col_3'),
(ID_Assembly,Col_4,'Col_4'),
(ID_Assembly,Col_5,'Col_5')
) v (id,val,Title)
WHERE v.val <> 0
)t1 JOIN FCD f on t1.Title = f.Tittle
sqlifddle
Результат
ID_FCD ID_Assembly
3 1200
1 1201
5 1201
2 1202
4 1203
2 1204
5 1204