各位大虾,帮忙看看这个如何实现,如果写出存储过程怎么写?
数据库内容如图(1)所示:
ID BH DTIME WD JD
5073 ST4-1 2013-05-19 19:32:39.000 34.216397 108.883773
5072 ST4-1 2013-05-19 19:32:28.000 34.216502 108.883768
5071 ST4-1 2013-05-19 19:32:17.000 34.216642 108.883603
4960 ST4-1 2013-05-18 17:42:57.000 34.216785 108.868152
4961 ST4-1 2013-05-18 17:42:46.000 34.216787 108.868151
4959 ST4-1 2013-05-18 17:43:08.000 34.216787 108.868152
4958 ST4-1 2013-05-18 17:43:19.000 34.216788 108.868151
4962 ST4-1 2013-05-18 17:42:35.000 34.216789 108.868151
比如现在要快速查找纬度值为:34.216505 经度值为: 108.883769在数据库中最接近的值,查询出来的结果应该显示ID为5072的记录,这个用sql语句或者存储过程怎么实现呢?GPS 快速相近存储过程sql
数据库内容如图(1)所示:
ID BH DTIME WD JD
5073 ST4-1 2013-05-19 19:32:39.000 34.216397 108.883773
5072 ST4-1 2013-05-19 19:32:28.000 34.216502 108.883768
5071 ST4-1 2013-05-19 19:32:17.000 34.216642 108.883603
4960 ST4-1 2013-05-18 17:42:57.000 34.216785 108.868152
4961 ST4-1 2013-05-18 17:42:46.000 34.216787 108.868151
4959 ST4-1 2013-05-18 17:43:08.000 34.216787 108.868152
4958 ST4-1 2013-05-18 17:43:19.000 34.216788 108.868151
4962 ST4-1 2013-05-18 17:42:35.000 34.216789 108.868151
比如现在要快速查找纬度值为:34.216505 经度值为: 108.883769在数据库中最接近的值,查询出来的结果应该显示ID为5072的记录,这个用sql语句或者存储过程怎么实现呢?GPS 快速相近存储过程sql
解决方案 »
- 谁能用个最简单的实例让我明白发布与订阅?
- left outer join 与INNER JOIN
- .net链接oracle数据库下面SQL语句的问题
- 两个标示列应该如何解决
- 如何查询整个数据库的问题
- 用SELECT 时怎样显示当前数据的行号
- select * from table1 where username='+s1+' and password ='+s2+'(s1,s2是变量),请问此SQL语句存在安全问题吗?如何修改可以解决此问题?
- 存储过程怎么编译起来?
- 如何构造这样的SQL语句:取出某列具有相同值的行?
- 请问在SOL7.0中如何获得某一月份的天数?
- 求一个SQL语句马上结贴谢谢
- sql server
wd (chaxunwd-wd)<wdfudu and (chaxunjd-jd)<jdfudu
从最新的2000条数据中查询 ,查询维度chaxunwd和wd的误差小于多少纬度幅度wdfudu ,
并且 查询经度chaxunjd和jd
的误差小于多少经度幅度jdfudu 的数据
wd (chaxunwd-wd)<wdfudu and (chaxunjd-jd)<jdfudu
从最新的2000条数据中查询 ,查询维度chaxunwd和wd的误差小于多少纬度幅度wdfudu ,
并且 查询经度chaxunjd和jd
的误差小于多少经度幅度jdfudu 的数据 第一次回复 少了个符号
--这个用不到索引,数据量大应该很慢
select top 1 * from tb
order by abs(WD-34.216505),abs(JD-3108.883769)--方法二
--前提WD,JD 是联合索引
insert into #t
select top 1 * from tb
where WD>34.216505 and JD>3108.883769
order by WD ,JD
union all
select top 1 * from tb
where WD>34.216505 and JD<3108.883769
order by WD ,JD desc
union all
select top 1 * from tb
where WD<34.216505 and JD>3108.883769
order by WD desc,JD
union all
select top 1 * from tb
where WD<34.216505 and JD<3108.883769
order by WD desc,JD descselect top 1 * from #t
order by abs(WD-34.216505),abs(JD-3108.883769)--方法三
--如果是2008或者更高版本使用geometry数据类型存坐标
--使用相应的方法处理最近坐标点。