我有两个表,一个是商店位置列表(lat / long),另一个是客户列表(地址lat / long)。
我需要的是一个为每个客户计算最近商店的查询?
答案 0 :(得分:1)
你的问题的答案叫做Haversine公式,你可以解决它here,它提供了应该在SQL Server中运行的实际SQL代码。
您需要在两个表之间取CROSS JOIN
,这将为您提供每对客户地址和商店位置。您需要考虑这些对中的每一对,因为您不知道哪一对是先验的最近邻居。
对于每一对,您可以使用此SQL代码来获取客户和商店之间的距离:
111.045*DEGREES(ACOS(COS(RADIANS(lat1)) * COS(RADIANS(lat2)) *
COS(RADIANS(long1) - RADIANS(long2)) +
SIN(RADIANS(lat1)) * SIN(RADIANS(lat2)))) AS distance_in_km
此处(lat1, long1)
是客户的经度和纬度,(lat2, long2)
是特定商店的值。