К сожалению, вы чрезмерно запутали свои примеры данных, что затрудняет понимание варианта использования, но я думаю, что у вас есть сочетание метаданных и реальных данных в таблице A
. Что ужасно Я уверен, что у создателя этого проекта были причины, но результат всегда ужасные запросы.
Вот одно из решений, которое, возможно, менее ужасно, чем альтернативы.
select b.id
, t_a.Itemdescription as a_Itemdescription
, t_b.Itemdescription as b_Itemdescription
, t_c.Itemdescription as c_Itemdescription
from b
left outer join
( select a.itemdescription
, a.item_no
from a
where a.columnname = 'A') t_a
on t_a.item_no b.a
left outer join
( select a.itemdescription
, a.item_no
from a
where a.columnname = 'B') t_b
on t_b.item_no b.b
left outer join
( select a.itemdescription
, a.item_no
from a
where a.columnname = 'C') t_c
on t_c.item_no b.c
Если честно, я не уверен, что это ответ, который вы ищете. Если это не так, пожалуйста, отредактируйте свой вопрос , чтобы уточнить требование. Хорошей идеей будет предоставить пример данных в виде строк в таблицах и опубликовать пример выходных данных, полученных из входных данных.