鑑於以下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 2013-04-30 18:40:29
您的SQL Server版本是否支持地理空間數據類型? – JOBG 2013-04-30 18:44:36
目前經緯度和緯度都是以浮標形式存儲的 – Matt 2013-04-30 18:50:22