Ono*_*alp 4 sql sql-server sqlgeography
我无法使用地理来计算使用我的表格格式的英里距离.
两个位置的纬度和经度并排:
id | A_Latitude | A_Longitude | B_Latitude | B_Longitude
Run Code Online (Sandbox Code Playgroud)
我试图让的地步A,与点一起B,并返回之间的距离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;
Run Code Online (Sandbox Code Playgroud)
我在所有行中获得里程和米的重复值.任何人都可以建议我应该如何构建此查询以获取我正在寻找的内容?
编辑:谢谢SQL冲浪!
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
Run Code Online (Sandbox Code Playgroud)
这是我要做的:
WITH X AS
(
SELECT
geography::Point(A_LATITUDE, A_LONGITUDE, 4326) A
,geography::Point(B_LATITUDE, B_LONGITUDE, 4326) B
,*
FROM TABLE1
)
SELECT
ROUND(B.STDistance(A)/1609.344, 2) AS MILES
,B.STDistance(X.A) AS METERS
,*
FROM X
Run Code Online (Sandbox Code Playgroud)
如果您考虑经常(并且在运行中)这样做,请考虑将计算列添加到表中,不仅是地理类型,还包括它们之间的距离.那时,它只是表格中的一个简单查询!
| 归档时间: |
|
| 查看次数: |
1174 次 |
| 最近记录: |