Я бы использовал regex для маркировки функций, которые делают каждое описание уникальным.
with Tab1x as (
select
Item_description,
ifnull(regexp_extract(Item_description,r'([x][0-9])'),'none') as xspec,
ifnull(regexp_extract(Item_description,r'([i][0-9])'), 'none') as ispec,
ifnull(regexp_extract(Item_description,r'([0-9]{2}\")'), 'none') as size
from Tab1
),
Tab2x as (
select
Customer_id,
Item_description,
ifnull(regexp_extract(Item_description,r'([x][0-9])'),'none') as xspec,
ifnull(regexp_extract(Item_description,r'([i][0-9])'), 'none') as ispec,
ifnull(regexp_extract(Item_description,r'([0-9]{2}\")'), 'none') as size
from Tab2
)
select
Tab1x.Item_description as Tab1_Item_description,
Tab2x.Item_description as Tab2_Item_description,
Tab2x.Customer_id
from Tab1x
left join Tab2x using(xspec,ispec,size)
Обратите внимание, я не касался Lenovo
или Yoga
, но если ваш реальный набор данных имеет несколько брендов / models, вы должны позаботиться об этом аналогичным образом.