SQL Server将最近的记录与另一个表匹配

时间:2018-11-24 14:50:50

标签: sql-server tsql

我有两张桌子,一张用于与客户交谈的时间,另一张用于与客户进行购买的时间,但是我不知道如何将最接近的购买与特定的同事联系起来

例如

表1-同事互动

*****apple
apple*****

表2-购买清单

[ColleagueID]  [DateOfInteraction]  [CustomerID]
------------------------------------------------
       A        2018-11-22 12:00         123
       B        2018-11-22 12:02         123

我上面要做的是将这两个记录绑定在一起,最初我在CustomerID上执行此操作,但这显然会产生重复,因为customerID在表2和表1中出现两次。其中DateOfInteraction

结果应该像

[PurchaseID]  [DateOfPurchase]  [PurchaseOutcome]  [CustomerID]
----------------------------------------------------------------
     1         2018-11-22 12:01      FAIL              123
     2         2018-11-22 12:03      SUCCESS           123

1 个答案:

答案 0 :(得分:1)

我认为apply是您想要的:

select p.*, i.*
from purchases p outer apply
     (select top (1) i.*
      from interactions i
      where i.customer_id = p.customer_id and
            i.DateOfInteraction < p.DateOfPurhase
      order by i.DateOfInteraction desc
     ) i;