首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >t-SQL:使用变量筛选结果集

t-SQL:使用变量筛选结果集
EN

Stack Overflow用户
提问于 2017-03-21 14:25:50
回答 1查看 2.1K关注 0票数 0

原谅我的天真。

我有一个查询,可以让你找到球体上两点之间的距离,在这种情况下,就是邮政编码之间的距离。

代码语言:javascript
运行
复制
SELECT  TOP 5 zip, city, state, latitude, longitude,
    69.0 * DEGREES(ACOS(COS(RADIANS(latpoint))
            * COS(RADIANS(latitude))
            * COS(RADIANS(longpoint) - RADIANS(longitude))
            + SIN(RADIANS(latpoint))
            * SIN(RADIANS(latitude)))) AS distance_in_miles
FROM    us_loc_data
JOIN    (
         SELECT 39.317974 AS latpoint, -94.57545 AS longpoint 
        ) AS p ON 1=1
ORDER BY distance_in_miles

从联接中可以看到,结果集是通过指定一对坐标作为“起始”点来筛选的,然后返回前5位最近位置的列表。(例子如下)

最后,我希望通过指定一个起始邮政编码来过滤结果,而不是指定一对坐标。如何实现一个变量来做到这一点?什么是最佳实践?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-21 14:52:25

没有经过测试,但您可以简单地修改您的子查询,以按邮政编码提取Lat/Lng。

代码语言:javascript
运行
复制
Declare @Zip varchar(10) = '02806'

SELECT  TOP 5 zip, city, state, latitude, longitude,
    69.0 * DEGREES(ACOS(COS(RADIANS(latpoint))
            * COS(RADIANS(latitude))
            * COS(RADIANS(longpoint) - RADIANS(longitude))
            + SIN(RADIANS(latpoint))
            * SIN(RADIANS(latitude)))) AS distance_in_miles
FROM    us_loc_data
JOIN    (
         SELECT latitude AS latpoint
              , longitude AS longpoint 
          From  us_loc_data 
          Where Zip = @Zip
        ) AS p ON 1=1
ORDER BY distance_in_miles
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42929880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档