Если я правильно понимаю, вы хотите сравнить последние 3 символа имени ячейки с подчеркиванием, удаленным в первой части имени таблицы после первого пробела.
Чтобы получить последние три символа без всяких подчеркиваний, вы можете использовать эту функцию trim(substr("Cell name",-3),'_')
, которую вы можете использовать в регулярном выражении для имени таблицы для проверки совпадений.
select seq_id
, ID
, SOURCE
, Cell_name
, case when regexp_like( table_name
, '^[^\w]* ' ||
ltrim(substr(cell_name,-3),'_') ||
'[- ]')
then 'PASS'
else 'FAIL'
end result
from YourData
Как и с некоторыми другими ответами, чтобы убедиться, что SRC1 и SRC2 совпадают, вы можете выполнить самостоятельное объединение и добавить второе условие в операторе case:
select src1.seq_id
, src1.ID
, src1.SOURCE
, src1.Cell_name
, case when regexp_like(src1.table_name,'^[^\w]* '
||ltrim(substr(src1.cell_name,-3),'_')
||'[- ]')
and regexp_like(src2.table_name,'^[^\w]* '
||ltrim(substr(src2.cell_name,-3),'_')
||'[- ]')
then 'PASS'
else 'FAIL'
end result
from YourData src1
join YourData src2
on src1.cell_name = src2.cell_name
and src1.source = 'SRC1'
and src2.source = 'SRC2'