Вы можете найти ближайший город, используя какую-то меру расстояния. Сначала исправьте вашу первую таблицу:
alter table code_commune
add latitude as (convert(decimal(14,10),
left(coordonnees_gps, charindex(',', coordonnees_gps) - 1)
)
);
alter table code_commune
add longitude as (convert(decimal(14,10),
stuff(coordonnees_gps, 1, charindex(',', coordonnees_gps), '')
)
);
Затем вы можете использовать apply
, как только вы определитесь с расстоянием метри c. Следующее использует расстояние Манхэттена:
select l.*, cc.code_comune
from leads l outer apply
(select top (1) cc.*
from code_commune cc
order by abs(cc.latitude - l.latitude) + abs(cc.longitude - l.longitude)
);
Это очень неэффективно. Если вам нужна эффективность, то вам следует изучить SQL Поддержка сервером пространственных данных .