簡體   English   中英

從一個表中選擇另一個表中具有相似數據的數據

[英]Choosing data from one Table that have similar data in another table

我有一個非常不尋常的問題,它涉及在 SQL Server 的兩個單獨表中匹配具有相似值的數據。 例如,我有兩個表:

第一個表包含以下數據:

  • 作業 ID (int),
  • 分配日期(日期),位置(nvarchar(MAX))

第二個表包含以下數據:

  • 日期(日期),開始時間(nvarchar(MAX)),
  • End_Time(nvarchar(MAX)), Begining)Ometer(int),
  • Ending_Ometer(int), Mileage(float),
  • To_location_Address(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_all_trips_2019 的記錄,其中來自兩個位置的 City 和 Zip Copes 是匹配的; 但是,我沒有在列中設置確切的位置數據。

在這種情況下如何過濾數據?

我願意使用 SQL、R 或 Python 來過濾數據; 最好的方法是可以的,只要我最終得到 KodakItAssignments 記錄的單個記錄。

謝謝您的回復和指導。

我選擇SQL來解決這個問題。 我決定使用兩個表的 RIGHT OUTER JOIN 和 WHERE 和 Like 運算符創建一個視圖。

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

我的結果非常接近(98% 滿意),因為這個查詢只產生了大部分回程(不是全部),因為有些旅行從我終止的地方開始,而不是從我的原始位置開始。 我需要檢查數據,並且可能需要編寫一個額外的查詢來收集剩余的數據。 總的來說,這對我的研究來說是一個非常好的開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM