计算两个经纬度坐标之间的距离Sql版
2015-1-25 18:47花了半个多小时做出来的东西别浪费了,以后说不定用的着,拿出来晒晒。
晕倒,发现我的编辑器“代码高亮”功能没上线,等我上线了之后再编辑一遍好了。
再晕倒,发现了摘要不填写不许保存的bug
DECLARE @R FLOAT SET @R = 6371.004; SELECT fff.HotelName,RujiaName,distance,ROW_NUMBER() OVER(PARTITION BY fff.HotelName ORDER BY distance) rowIndex INTO #T FROM ( SELECT a.HotelID, a.HotelName, b.HotelID AS 'RujiaID', b.HotelName AS 'RujiaName', a.latcount, a.loncount, b.latcount AS rLat, b.loncount AS bLon, @R*(ACOS(cos(CAST(b.latcount AS FLOAT)*PI()/180)*cos(CAST(a.latcount AS FLOAT)*PI()/180)*cos((CAST(b.loncount AS FLOAT) - CAST(a.loncount AS FLOAT))*PI()/180)+sin(cast(b.latcount AS FLOAT)*PI()/180)*sin(cast(a.latcount AS FLOAT)*PI()/180))) AS distance FROM dbo.tmp_huazhulonandlat a WITH(NOLOCK) INNER JOIN dbo.tmp_rujialonandlat b WITH(NOLOCK) ON 1 = 1 WHERE a.loncount IS NOT NULL AND a.latcount IS NOT NULL AND b.loncount IS NOT NULL AND b.latcount IS NOT NULL AND a.loncount <> '0' AND a.latcount <> '0' AND b.loncount <> '0' AND b.latcount <> '0' ) fff GROUP BY fff.HotelName,RujiaName,distance; SELECT * FROM #T WHERE rowIndex = 1 ORDER BY distance;
代码高亮以上线,不过syntaxhighlighter真心的不好用,不能自动换行,非要在样式中强制换行的话还会让行号出现胖子穿小衣现象,这种实现机制没法让行号正确描述。空了再看看能不能修改下,暂时有的用先用着吧。