SQL 查询获取给定邮政编码 20 英里半径内的所有邮政编码(地址)

2024-03-30

我的查询仅匹配彼此相同的邮政编码。我需要一个查询,可以返回给定邮政编码 20 英里半径内的所有邮政编码。

DECLARE @cZip VARCHAR(5)
SET @cZip = '63026'
DECLARE @dMin DECIMAL = 20 * 32186.9 -- metres

DECLARE @c GEOGRAPHY
SELECT @c = GEOGRAPHY::Parse('Point(' + CAST(longitude AS VARCHAR)+ ' '     + CAST(latitude AS VARCHAR) + ')')
FROM wcr_sales_zip_info.dbo.utT_ZIP_Long_Lat
WHERE ZIP_CD = @cZip

SELECT  S.ZIP_CD
    ,AAE.AGN_FIRST_NM
    ,AAE.AGN_LAST_NM
    ,AAE.AGN_ADDRESS_CD
    ,AAE.AGN_CITY_CD
    ,AAE.AGN_STATE_CD
    ,AAE.AGN_ZIP_CD
    ,AAE.AGN_AGENT_NBR
    ,AAE.AGN_EMAIL_NBR
    ,AC.CANDIDATE_ID
    ,AC.FIRST_NM
    ,AC.LAST_NM
    ,AC.ADDRESS_TXT
    ,AC.CITY
    ,AC.STATE_CD
    ,AC.ZIP AS 'ZIP1'                   
    ,STUFF(STUFF(STUFF(AC.HOME_PHONE_NBR,1,0,'  ('),6,0,') '),11,0,'-') AS 'HOME_PHONE_NBR' 
    ,STUFF(STUFF(STUFF(AC.ALT_PHONE_NBR,1,0,' ('),6,0,') '),11,0,'-') AS 'ALT_PHONE_NBR'
    ,AC.EMAIL
    ,AC.PREF_CONTACT_METHOD_CD
    ,AC.TRAVEL_TIME_MINS_NBR
    ,AC.TRAVEL_DISTANCE_MLS_NBR
    ,AC.ADDED_DT    
FROM wcr_sales_zip_info.dbo.utT_ZIP_Long_Lat S
JOIN ASRD_AGENT_AUTO_EMAIL AAE ON S.ZIP_CD = AAE.AGN_ZIP_CD
JOIN ASRD_CANDIDATES AC ON S.ZIP_CD = AC.ZIP
WHERE --AAE.AGN_ZIP_CD >= '63026'
--AND 
@c.STDistance(GEOGRAPHY::Parse('Point(' + CAST(longitude AS VARCHAR)  + ' ' + CAST(latitude AS VARCHAR) + ')')) >= @dMin 
AND AC.ADDED_DT >= DATEADD(day, -7, GETDATE())  

由于计算的复杂性,我使用 UDF。

在这里,您传递基础纬度/经度以及要测试的纬度/经度

需要明确的是:该距离是“直线距离”,而不是行驶距离。

例如:

Declare @BaseZip  varchar(10) = '02806'
Declare @Within   int         = 20

Select Distinct
       BaseZip = A.ZipCode
      ,B.ZipCode
      ,B.CityName
      ,B.StateCode
      ,Miles = [dbo].[udf-Geo-Calc-Miles] (A.Lat,A.Lng,B.Lat,B.Lng)
 From (Select Distinct ZipCode,Lat,Lng From [dbo].[ZipCodes] where ZipCode=@BaseZip) A
 Join [dbo].[ZipCodes] B
   on [dbo].[udf-Geo-Calc-Miles] (A.Lat,A.Lng,B.Lat,B.Lng) <= @Within
 Order By 5 

Returns

如果有兴趣的话UDF

CREATE Function [dbo].[udf-geo-Calc-Miles] (@Lat1 float,@Lng1 float,@Lat2 Float,@Lng2 float)  
Returns Float as  
Begin 
   Declare @Miles Float = (Sin(Radians(@Lat1)) * Sin(Radians(@Lat2))) + (Cos(Radians(@Lat1)) * Cos(Radians(@Lat2)) * Cos(Radians(@Lng2) - Radians(@Lng1)))
   Return Case When @Miles is null then 0 else abs((3958.75 * Atan(Sqrt(1 - power(@Miles, 2)) / @Miles))) end
End

EDIT

您可能会注意到一些重复/相同的里程。如您所知,城市可能有备用名称,例如布朗大学和布朗站位于罗德岛州普罗维登斯,但组织也可能有自己的邮政编码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL 查询获取给定邮政编码 20 英里半径内的所有邮政编码(地址) 的相关文章

  • 在 plsql 中立即执行

    如何从这段代码中得到结果 EXECUTE IMMEDIATE SELECT FROM table name through for loop 通常的方法看起来像这样 for items in select from this table l
  • 在SQL Server中仅获取浮点数的小数部分[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我在 SQL Server 2008
  • Postgresql 中的 id 列位置重要吗?

    我正在测试删除主键列 id 的迁移 我想使用外键作为主键 当我运行并恢复迁移时 我看到表的状态是相同的 只是 id 列现在是最后一个 它会以任何方式改变我的数据库的行为吗 我是否应该费心去恢复迁移恢复代码中的列顺序 理论上一切都应该没问题
  • 显示过去 7 天 PHP 的结果

    我想做的是显示过去 30 天的文章 但我现有的代码不断给我一个 mysql fetch assoc 错误 然后追溯到我的查询 这是代码 sql mysql query SELECT FROM table WHERE DATE datetim
  • 在单个更新语句上使用事务

    我在工作中为一些 SP 配音 我发现编写代码的人在单个更新语句上使用了事务 如下所示 begin transaction single update statment update table whatever with whatever
  • (SQL) 识别字段中字符串格式多次出现的位置

    我需要将叙述字段 自由文本 拆分为多行 目前的格式如下 Case Reference Narrative XXXX XX 123456 Endless Text up to 50k characters 在作为文本的叙述字段中 各个条目 当
  • 是否可以使用“WHERE”子句来选择SQL语句中的所有记录?

    晚上好 我很好奇是否可以在 SQL 语句中创建一个 WHERE 子句来显示所有记录 下面一些解释 随机 SQL 语句 Java JSP示例 正常情况 String SqlStatement SELECT FROM table example
  • 获取查询的行号

    我有一个查询将返回一行 当表排序时 有什么方法可以找到我正在查询的行的行索引吗 我试过了rowid但当我期待第 7 行时却得到了 582 Eg CategoryID Name I9GDS720K4 CatA LPQTOR25XR CatB
  • SQL Server PIVOT 函数

    我有一个检索所有代理及其模块的查询 结果集将每个模块返回 1 行 SELECT am agentID AS agentid pa agentDisplayName agentdisplayname m ModuleName ModuleNa
  • 将列的值添加到 LIKE 语句中?

    我有 3 个标签表 标签类别和使用过的标签 我想要获取所有标签的列表以及已使用标签的计数 所使用标签的格式是每个具有标签的文档 ID 的逗号分隔值 我一直在尝试类似的方法 但无法将tags tag 字段的值插入到LIKE 语句中 SELEC
  • 从数据库配置中的连接字符串中删除 SSIS 密码

    我有一个 SSIS 包 它使用 SQL 服务器中的 SSIS 配置表来检索 OLE DB 连接管理器的连接字符串属性 问题是我还需要相同的连接字符串来调用使用实体框架的程序集 我尝试访问连接管理器连接字符串属性 但 SSIS 总是删除密码
  • 从存储过程中的动态 SQL 获取结果

    我正在编写一个存储过程 需要在过程中动态构造 SQL 语句以引用传入的表名称 我需要让这个 SQL 语句返回一个结果 然后我可以在整个过程的其余部分中使用该结果 我尝试过使用临时表和所有内容 但我不断收到一条消息 提示我需要声明变量等 例如
  • 使用MySQL计算单个表中借方和贷方的余额

    下面的 MySQL 表包含带有关联金额的借方或贷方 操作 如何选择具有非零 余额 的所有 CLIENT ID 我尝试将表连接到自身以计算所有借方和贷方总额 但有些东西无法正常工作 CLIENT ID ACTION TYPE ACTION A
  • 是否允许在流水线 PL/SQL 表函数中使用 SELECT?

    管道函数的文档指出 在 SQL 语句 通常是SELECT 并且在大多数示例中 管道函数用于数据生成或转换 接受客户作为参数 但不发出任何 DML 语句 现在 从技术上讲 可以使用 SELECT 而不会出现 Oracle 中的任何错误 ORA
  • Postgres、更新和锁定顺序

    我正在研究 Postgres 9 2 有 2 个更新 每个更新都有自己的事务 一个看起来像 UPDATE foo SET a 1 WHERE b IN 1 2 3 4 另一个也类似 UPDATE foo SET a 2 WHERE b IN
  • SQL Server 相当于 MySQL 的 USING

    在 MySQL 中 当您连接不同表中具有相同名称的列时 可以在连接中使用关键字 USING 例如 这些查询产生相同的结果 SELECT FROM user INNER JOIN perm USING uid SELECT FROM user
  • 使用 Excel 2010 通过存储过程读取/写入 SQL Server 2008 数据库

    我们有一个 SQL Server 2008 数据库 它有存储过程来处理读 写等 这些过程由各种应用程序内部使用 需要一个人直接更新数据库中名为 Employee 的表 更新非常简单 更新 VARCHAR 和 INT 外键 字段 问题是 Sh
  • 在 Postgres 中的数组字段上应用聚合函数?

    是否可以对整数 字段 或其他数字数组 中的所有值应用聚合 如 avg stddev CREATE TABLE widget measurement integer insert into widget measurement values
  • 如何通过循环变量在 dbt 中多次运行 SQL 模型?

    我有一个 dbt 模型 测试模型 接受地理变量 zip state region 在配置中 我想通过循环变量来运行模型三次 每次使用不同的变量运行它 问题是 我有一个如下所示的宏 它将变量附加到输出表名称的末尾 即运行测试模型 with z
  • SQL Group BY,每个组的前 N ​​个项目

    我有一个 SQL 查询 可以获取给定商店中销量最高的 5 件商品 SELECT TOP 5 S UPCCode SUM TotalDollarSales FROM Sales S WHERE S StoreId 1 GROUP BY S U

随机推荐

  • 警告:“继续”目标开关相当于“中断”。您的意思是使用“继续2”吗?

    我有 php7 3 和 symfony2 8 当我尝试使用控制台创建类时 出现此错误 Symfony Component Debug Exception ContextErrorException 警告 继续 目标开关相当于 中断 你的意思
  • 如何在kubernetes中指定Proxy Pass

    我的资产在 s3 上 我的服务部署在 kubernetes 上 是否可以在 nginx ingress conf 中定义代理传递 我当前的 nginx proxy pass 资产到 s3 我想在 kubernetes 中复制 locatio
  • 注册成功后如何分配角色?

    我正在使用 fos 用户捆绑包和 pugx 多用户捆绑包 我已阅读所有文档 并且我是 Symfony 的新手 在 pugx 多用户捆绑包中 每个点都有一个示例 但只有一个 成功注册 覆盖控制器的示例生成表格 gt 好的 覆盖模板的示例生成表
  • 为什么 Actor.receive 是偏函数?

    Why is Actor receive部分功能 我总是可以使用带有匹配表达式的正则函数来代替它 It is a PartialFunction捕获消息被处理或未处理的可能性Actor 未处理的消息将 不让演员失败MatchError 产卵
  • Laravel eloquent 获取数据库列中最常见的值

    从一个表animals我有以下值animal name column cat dog cat 我想从中提取 猫 这个词 因为它是该专栏中最流行 最常用的词 我如何使用 laravel eloquent 做到这一点 雄辩 App Animal
  • java.lang.String 类型中没有由 @DynamoDBHashKey 注释的方法或字段

    我不知道为什么不运行这个项目 Data DynamoDBTable tableName tableName public class entityName implements Serializable private static fin
  • 使用 JavaScript 将当前日期放入 PDF 表单的文本字段中

    我喜欢创建一个 PDF 打印时包含打印的日期和时间 因为实际更改 PDF 内容需要 PDF 编辑器 所以我认为使用 PDF 表单 即包含可填写表单的 PDF 其中一个文本字段会在打印 PDF 时自动更新为当前日期和时间 PDF 的实际创建不
  • 仅 Grep 第一个匹配项并停止

    我正在使用 grep 递归搜索目录 并使用以下参数希望只返回第一个匹配项 不幸的是 它返回了不止一个 事实上 我上次查看时返回了两个 似乎我有太多的争论 尤其是没有得到想要的结果 grep o a m 1 h r Pulsanti Oper
  • IO 的“最佳”ExecutionContext

    我的 Scala 代码中有一些同步调用 我将它们包装在阻塞 上下文中 然后包装在 Future Future blocking syncCall 中 但我不知道要使用哪种类型的 ExecutionContext 我知道可能有很多可能性 并且
  • 如何更正此错误:未找到数据源名称且未指定默认驱动程序

    我有一个在 Windows 服务器上运行的网站 它运行得很好 我尝试在本地主机中进行复制 但收到错误 Warning odbc connect function odbc connect SQL error Microsoft ODBC D
  • 通过网络发送的数据的字符串压缩/解压缩[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找 C 中的字符串压缩方法 可以在将数据字符串写入网络套接字之前对其运行 我对任何类型的压缩都相当陌生 因此我在这里寻求一些建议
  • GitHub 中的发布到底是什么?

    究竟是什么 它是用来做什么的 使用范围有多广泛 通常如何使用 来自官方GitHub https help github com articles about releases Releases are GitHub s打包并向用户提供软件的
  • 替换每列的最大值

    我有一个矩阵 我想用 1 替换每列的最大值 我怎样才能在R中做到这一点 我试过 set seed 14 mat lt matrix sample 10 20 replace TRUE nr 5 apply mat 2 which max 1
  • 为什么 false == "false" 是假的?

    我仍在学习 javaScript 的基础知识 我不明白为什么会发生这种情况 有类型强制false false 将转换为 false false true or false false true So why false false 是假的吗
  • JQMIGRATE:jQuery.fn.attr('selected') 可以使用属性而不是属性

    operatordelivery attr checked true 您好 我目前正在将 jQuery 版本迁移到 jQuery 2 1 1 我可以在控制台中看到警告JQMIGRATE jQuery fn attr selected may
  • 使用 Jsoup 提取 Span 标签数据

    我正在尝试使用 Jsoup 提取 html 中的特定内容 下面是示例 html 内容 div class shop section line bmargin10 tmargin10 div class price section fksk
  • Android 无法禁用剪切复制粘贴

    我无法禁用复制粘贴选项 在三星 Galaxy S2 上 如果我单击编辑文本 则会出现一个箭头 单击该箭头时 所有选项都会出现 onCreateContextMenu 尚未被调用 在 onUserInteration 中 我只是使用 setT
  • 如何在 gtk2hs 中的事件处理程序之间传递状态

    我正在尝试制作一个玩具应用程序 只是为了了解如何在 Haskell 中编写事件驱动程序 我想做的是在画布上画一条线 每次按下按键时该线都会向前移动 所以它有点像文本编辑器中的原始光标 我的问题是我无法找出计算用户按键次数的最佳方法 显然我不
  • Git 合并,不包括从一个分支到另一个分支的提交

    在开发过程中 我经常需要提交和推送 中间 提交 即提交代码不可编译或正在更改某些内容等 我不想进行此类提交 但这是轻松继续我的工作所必需的从办公室到家里 有时其他开发人员可以为他们提供开始工作的基础 我以为我已经找到了解决这个问题的方法 我
  • SQL 查询获取给定邮政编码 20 英里半径内的所有邮政编码(地址)

    我的查询仅匹配彼此相同的邮政编码 我需要一个查询 可以返回给定邮政编码 20 英里半径内的所有邮政编码 DECLARE cZip VARCHAR 5 SET cZip 63026 DECLARE dMin DECIMAL 20 32186