两张表之间的对应关系



我有表表code_Commune包含该城市的一般gpscode_Commune:

Code_commune           Nom_commune          coordonnees_gps
01263                MONTMERLE SUR SAONE             46.0849573236,4.7608579486

现在我需要和table lead进行通信,以添加code_commune和Nom_comune:

表引导

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

有没有办法把这两张桌子对应起来?

您可以使用某种距离测量来查找最近的城市。首先,修复您的第一张表:

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。以下使用曼哈顿距离:

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 Server对空间数据的支持。

最新更新