У меня есть таблица с контактными номерами и другая справочная таблица, содержащая переменную длины и столбец с номерами.Мне нужно найти имя префикса, где префикс номера совпадает с префиксом в справочной таблице, но это должен быть тот, который соответствует самому длинному совпадению префикса.(О боже, я надеюсь, что это имеет смысл)
То, что я пробовал до сих пор:
select a.record_type,a.number,b.prefix,b.prefix_name
from first_table a , second_table b
where a.transaction_date=20180924 and case
when b.length=1 then substr(a.number,1,1)=b.prefix
when b.length=2 then substr(a.number,1,2)=b.prefix
when b.length=3 then substr(a.number,1,3)=b.prefix
when b.length=4 then substr(a.number,1,4)=b.prefix
when b.length=5 then substr(a.number,1,5)=b.prefix
when b.length=6 then substr(a.number,1,6)=b.prefix
when b.length=7 then substr(a.number,1,7)=b.prefix
when b.length=8 then substr(a.number,1,8)=b.prefix
when b.length=9 then substr(a.number,1,9)=b.prefix
when b.length=10 then substr(a.number,1,10)=b.prefix
when b.length=11 then substr(a.number,1,11)=b.prefix
when b.length=12 then substr(a.number,1,12)=b.prefix
when b.length=13 then substr(a.number,1,13)=b.prefix
when b.length=14 then substr(a.number,1,14)=b.prefix
end
Однако он по-прежнему возвращает повторяющийся результат, то есть: если число равно 12345, оно соответствует ссылкес префиксом 1234 и 123, а я на самом деле просто хочу 1234.
Есть ли способ как-то расставить приоритеты в кейсе?Спасибо
Пример данных в двух таблицах: пример
Мой текущий результат и желаемый результат: результаты