【问题标题】:SQL Distance in Miles from Latitude and Longitude of 2 locations2 个位置的经纬度 SQL 距离(以英里为单位)
【发布时间】:2021-08-21 02:27:20
【问题描述】:

您好,我有一个查询,我从 OB 获取纬度和经度,并从 PED 获取纬度和经度。我需要计算OB和PED之间的距离。我必须为多个位置执行此操作,因此需要一些简单的实现。我从 SQL 中看到了一个 STDistance 函数,但是蚂蚁怎么可能认为有办法将我的纬度和经度投射到地理点,但我无法弄清楚这一点。非常感谢任何帮助


SELECT  DISTINCT REPLACE(LTRIM(REPLACE([Med_Number], '0', ' ')), ' ', '0') OBMed ,
Zip as OBZip, County AS OBCounty,obz.Latitude as OBLat, obz.Longitude as OBLong,
PEDMed, PEDZip,PEDCounty,pedz.Latitude as PEDLat, pedz.Longitude as PEDLong,
'' AS PEDDistance
FROM sfo
LEFT JOIN (SELECT  DISTINCT REPLACE(LTRIM(REPLACE([Med_Number], '0', ' ')), ' ', '0') PEDMed ,Zip as PEDZip,
            County as PEDCounty
            FROM sio
            WHERE 
              Office_Specialty like '%Internal Medicine%' 
              or Office_Specialty like '%Family Medicine%'
          ) AS sfp ON  REPLACE(LTRIM(REPLACE(sfo.County, '0', ' ')), ' ', '0') = sfp.PEDCounty
LEFT JOIN [e_ZipCodes] obz on sfo.Zip = obz.ZipCode 
LEFT JOIN [e_ZipCodes] pedz on sfp.PEDZip = pedz.ZipCode 
 WHERE Office_Specialty like '%Obstetrics & Gynecology%'
 AND med= '101'

【问题讨论】:

    标签: sql distance


    【解决方案1】:

    您没有告诉我们纬度/经度列的数据类型是什么。

    如果它们是数字,那么您可以获得地理实例like so:

    DECLARE @OBpoint geography = geography::Point(41.878899,-87.636297, 4326) ,
               @PEDpoint geography = geography::Point(40.749014,-73.985317, 4326)
    

    如果列是文本,则需要使用解析方法,即STPointFromText():

    DECLARE @OBpoint geography=geography::STPointFromText('POINT(<oblat>,<oblong>)', 4326)
    

    在上面,您必须从您的 obz.Latitude 和 obz.Longitude 值组合字符串,并将其传递给 STPointFromText 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多