从另一个选项卡中具有相似数据的表中选择数据

2024-04-27 07:45:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常不寻常的问题,它涉及到在SQLServer的两个单独的表中匹配具有相似值的数据。 例如,我有两个表:

第一个表包含以下数据:

  • 作业ID(int)
  • 分配日期、地点(nvarchar(MAX))

第二个表包含以下数据:

  • 日期(Date),开始时间(nvarchar(MAX))
  • 结束时间(nvarchar(MAX)),开始时间(int)
  • 终点里程计(int),里程(float)
  • 到地址(nvarchar(MAX))

我在SQL中创建了以下查询以生成视图,以便检查数据的有效性:

SELECT dbo.KodakITAssignments.AssignmentDate, 
       dbo.KodakIT_all_trips_2019.Date,               
       dbo.KodakIT_all_trips_2019.Start_Time, 
       dbo.KodakIT_all_trips_2019.End_Time, 
       dbo.KodakIT_all_trips_2019.Beginning_Odometer,                         
       dbo.KodakIT_all_trips_2019.Ending_Odometer, 
       dbo.KodakIT_all_trips_2019.Mileage_mi, 
       dbo.KodakITAssignments.JobID, 
       dbo.KodakITAssignments.Location, 
       dbo.KodakIT_all_trips_2019.To_Location_Address
FROM dbo.KodakIT_all_trips_2019 RIGHT OUTER JOIN
     dbo.KodakITAssignments
     ON dbo.KodakIT_all_trips_2019.Date = dbo.KodakITAssignments.AssignmentDate

我的结果不太令人满意。下面是我的一个结果示例:

11/26/2019  11/26/2019  8:51 PM 9:12 PM 89053   89062   9   125272  114-116 Quimby Street, westfield, NJ 07090 ,Westfield ,US   1701 Earl St, Union, NJ 07083
11/26/2019  11/26/2019  8:11 PM 8:18 PM 89052   89053   1.4 125272  114-116 Quimby Street, westfield, NJ 07090 ,Westfield ,US   200 Varick St, New York, NY 10014
11/26/2019  11/26/2019  7:57 PM 8:01 PM 89051   89052   0.7 125272  114-116 Quimby Street, westfield, NJ 07090 ,Westfield ,US   62 W 14th St, New York, NY 10011
11/26/2019  11/26/2019  7:39 PM 7:41 PM 89051   89051   0.3 125272  114-116 Quimby Street, westfield, NJ 07090 ,Westfield ,US   14 6th Ave, New York, NY 10013
11/26/2019  11/26/2019  4:29 PM 4:50 PM 77846   77854   7.7 125272  114-116 Quimby Street, westfield, NJ 07090 ,Westfield ,US   1701 Earl St, Union, NJ 07083
11/26/2019  11/26/2019  3:41 PM 3:42 PM 89051   89051   0.1 125272  114-116 Quimby Street, westfield, NJ 07090 ,Westfield ,US   225 Broadway, Suite 2130, New York NY  10007
11/26/2019  11/26/2019  3:27 PM 3:28 PM 89051   89051   0.3 125272  114-116 Quimby Street, westfield, NJ 07090 ,Westfield ,US   101 Barclay Street, New York, NY 10007
11/26/2019  11/26/2019  3:11 PM 3:28 PM 77843   77846   3.4 125272  114-116 Quimby Street, westfield, NJ 07090 ,Westfield ,US   116 Elmer St, Westfield, NJ 07090
11/26/2019  11/26/2019  11:30 AM    11:40 AM    89049   89051   2.3 125272  114-116 Quimby Street, westfield, NJ 07090 ,Westfield ,US   260 Broadway, New York, NY 10007
11/26/2019  11/26/2019  11:03 AM    11:24 AM    89037   89049   12.1    125272  114-116 Quimby Street, westfield, NJ 07090 ,Westfield ,US   175 12th St, Jersey City, NJ 07310
11/26/2019  11/26/2019  11:02 AM    11:17 AM    77837   77843   5.5 125272  114-116 Quimby Street, westfield, NJ 07090 ,Westfield ,US   570 South Ave East, Building G, Suite F, Cranford, NJ  07016
10/21/2019  10/21/2019  7:37 PM 7:48 PM 87965   87967   2.2 119748  41 Main St, Millburn, NJ 07041, USA ,US 1701 Earl St, Union, NJ 07083

我想保持记录从KodakIT\u所有的\u旅行\u 2019在城市和邮编范围从两个位置是一个匹配;但是,我在列中没有确切的位置数据集

在这种情况下,如何过滤数据

我乐于使用SQL、R或Python来过滤数据;哪种方法最有效都没问题,只要我有一张Kodakitasignments唱片的唱片

谢谢你的答复和指导


Tags: 数据streetnewallusstyorkdbo
1条回答
网友
1楼 · 发布于 2024-04-27 07:45:19

我选择SQL来解决这个问题。我决定创建一个视图,其中包含两个表的右外连接以及WHERE和Like操作符

(dbo.TableA.Location LIKE '%' + RIGHT(dbo.KodakIT_all_trips_2019.To_Location_Address, 5) + '%') 

我的结果非常接近(98%满意),因为这个查询只产生了大部分的往返行程(不是全部),因为有些行程从我终止的地方开始,而不是从我原来的位置开始。我需要检查数据,可能需要编写一个额外的查询来收集剩余的数据。总的来说,这是我研究的一个很好的开始

相关问题 更多 >