我在使用地理位置计算两个地点之间的英里数时遇到了麻烦,这是我的表格格式。
两个地点的纬度和经度并排显示:
id | A_Latitude | A_Longitude | B_Latitude | B_Longitude
我想要获取点A
和点B
,并返回它们之间的距离(单位为英里)。
我尝试过几种方法,包括类似以下代码:
DECLARE @orig geography
DECLARE @end geography
SELECT
@orig = geography::Point(A_LATITUDE, A_LONGITUDE, 4326)
,@end = geography::Point(B_LATITUDE, B_LONGITUDE, 4326)
FROM table1
SELECT
ROUND(@END.STDistance(@ORIG)/1609.344,2) AS MILES
,@END.STDistance(@ORIG) AS METERS
,table1.*
FROM table1;
我在所有行中得到了重复的英里和米值,能否有人建议我应该如何组织这个查询以得到我想要的结果?
编辑:谢谢SQL Surfer!
WITH X AS
(SELECT
geography::Point(A_LATITUDE, A_LONGITUDE, 4326) A
,geography::Point(B_LATITUDE, B_LONGITUDE, 4326) B
,ID
FROM TABLE1)
SELECT
ROUND(X.B.STDistance(X.A)/1609.344,2) AS MILES
,X.B.STDistance(X.A) AS METERS
,T.*
FROM TABLE1 T
LEFT JOIN X ON T.ID = X.ID