JOIN на основе расстояния для заданной широты / долготы

Учитывая следующие таблицы:

table A (id, latitude, longitude)
table B (id, latitude, longitude)

как мне построить эффективный запрос T-SQL, который связывает каждую строку в A с ближайшей строкой в ​​B?

ResultSet должен содержать все строки в A и свяжите их с 1 и только 1 элементом в B. Я ищу следующий формат:

(A.id, B.id, distanceAB)

У меня есть функция, которая вычисляет расстояние по двум парам широты и долготы. Я пробовал что-то, используя order by ... limit 1 и / или rank () over (partition by ...) as rowCount ..., где rowCount = 1 , но результат либо не совсем то, что мне нужно, либо возвращение занимает слишком много времени.

Я что-то упускаю?

5
задан Marsellus Wallace 20 January 2012 в 21:37
поделиться