Соответствие между двумя таблицами - PullRequest
0 голосов
/ 23 марта 2020

У меня есть таблица, таблица code_Commune содержит gps для города в целом code_Commune:

Code_commune           Nom_commune          coordonnees_gps
01263                MONTMERLE SUR SAONE             46.0849573236,4.7608579486

Теперь мне нужно сделать переписку с table lead, чтобы добавить code_commune и Nom_Commune:

Таблица ведет

Id_lead     latitude     Longitude   
F439130C    46.00000000  6.39522000  
24A09223    46.00000000  6.39522000  
42899ABF    46.00000000  4.75212800  

Есть ли способ сделать соответствие между двумя таблицами?

1 Ответ

0 голосов
/ 23 марта 2020

Вы можете найти ближайший город, используя какую-то меру расстояния. Сначала исправьте вашу первую таблицу:

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 Поддержка сервером пространственных данных .

...