Существует связь «1 ко многим» между таблицами GeoNames (не показаны) и GeoNameAlternateNames (показаны ниже) с помощью FK GeoNameId. Учитывая приведенную ниже структуру, я хочу получить значение alternateName, где IsPreferredName = 1, если оно не найдено, тогда используйте следующий столбец IsShortName, если эта запись не найдена, то используйте следующий столбец и так далее, и так далее. В этом случае я ожидаю, что будет возвращен верхний ряд. Помните, что я буду присоединяться к этой таблице из таблицы GeoNames.
В GeoNames более 11 миллионов + записей и в GeoNamesAlternateNames более 17 миллионов, поэтому, как неандерталец, это не приемлемое решение.
Какая стратегия лучше всего подходит для этого? Я пробовал группировать, оставлял объединение в каждой колонке и объединял, ранжировал в подстолы, и я собираюсь вырвать свои волосы. Заранее спасибо.
![enter image description here](https://i.stack.imgur.com/2j2bq.png)