Учитывая следующий SQL, который возвращает список аэропортов, основанных на данном городе, как бы я еще больше его улучшил, чтобы отсортировать результаты по ближайшим к мне? Похоже, он должен быть достаточно простым, но он ускользает от меня.SQL Server: поиск ближайшего местоположения
DECLARE @latRange float
DECLARE @LongRange float
DECLARE @LowLatitude float
DECLARE @HighLatitude float
DECLARE @LowLongitude float
DECLARE @HighLongitude float
DECLARE @Radius float = 100
DECLARE @istartlat float
DECLARE @istartlong float
Select @istartlat=Latitude, @istartlong=Longitude from Lookup where PlaceName = '"Franklin"' and StateCode = '"AR"'
Select @latRange = @Radius/((6076/5280) * 60)
Select @LongRange = @Radius/(((COS((@istartlat * 3.14592653589/180)) * 6076.)/5280. * 60))
Select @LowLatitude = @istartlat - @latRange
Select @HighLatitude = @istartlat + @latRange
Select @LowLongitude = @istartlong - @LongRange
Select @HighLongitude = @istartlong + @LongRange
Select a.City, a.State, a.AirportCode, a.AirportName, a.CountryCode
from PFM_Airport a
where (a.Latitude <= @HighLatitude) and (a.Latitude >= @LowLatitude) and (a.Longitude >= @LowLongitude)
and (a.Longitude <= @HighLongitude)
--and a.CountryCode in ('USA', 'CANADA')
order by a.Latitude, a.Longitude;
SQL имеет константу pi, ['PI()'] (http://msdn.microsoft.com/en-us/library/ms189512.aspx). Вам не нужно жестко указывать его, если вы не намеренно округлите его до определенного значения. – valverij
Поддерживает ли ваша версия SQL Server геопространственные пространственные типы данных? – JOBG
В настоящее время lat и long хранятся в виде поплавков – Matt