Вы можете перекрестное соединение, чтобы получить все комбинации точек, а затем использовать теорему Пифагора, чтобы найти расстояния. Это, вероятно, неэффективно для большого набора данных, хотя.
Select *, sqrt(power(a.x-b.x, 2) + power(a.y-b.y, 2)) as Distance
from MyData a
Join MyData b
on a.locationcode > b.locationcode --so you don't get all combination of points a,b and b,a returned
Вы также можете записать его как MyData a cross join MyData b
, а затем отфильтровать строки, которые присоединяются к себе (или игнорировать их, так как расстояние будет 0 в этих случаях).
Чтобы получить только самый большой, что-то вроде этого:
Select top 1 *, sqrt(power(a.x-b.x, 2) + power(a.y-b.y, 2)) as Distance
from MyData a
Join MyData b
on a.locationcode > b.locationcode
order by Distance desc
(Обратите внимание, что вам может понадобиться что-то более сложное, если вы хотите увидеть все наборы точек в случае наличия связей).