我在SQL中遇到了一个联接,我似乎无法理解它的机制。首先,我有这两张表:
表1:
ClientID | Date | Value
---------|--------------|------
63 | 2019-10-04 | 77
63 | 2019-10-05 | 50
63 | 2019-10-06 | 70
63 | 2019-10-07 | 62
67 | 2019-10-04 | 64
67 | 2019-10-05 | 69
67 | 2019-10-06 | 66
表2:
ClientID | Date | Target
---------|--------------|------
63 | 2019-10-04 | 80
63 | 2019-10-06 | 55
67 | 2019-10-04 | 65
67 | 2019-10-07 | 70
从本质上讲,我想将表2中每个客户端的最新"目标"连接到表1中的值。通过这种方式,我可以跟踪特定日期的当前目标和价值。这个例子的最后一张表是这样的:
ClientID | Date | Value | Target
---------|--------------|-------|--------
63 | 2019-10-04 | 77 |80
63 | 2019-10-05 | 50 |80
63 | 2019-10-06 | 70 |55
63 | 2019-10-07 | 62 |55
67 | 2019-10-04 | 64 |65
67 | 2019-10-05 | 69 |65
67 | 2019-10-06 | 66 |65
TIA为您提供任何帮助,因为我对SQL世界相对陌生。另外,如果我能进一步澄清什么,请告诉我。
您可以使用横向join
:
select t1.*, t2.*
from table1 t1 outer apply
(select top (1) t2.*
from table2 t2
where t2.clientid = t1.clientid and t2.date <= t1.date
order by t2.date desc
) t2;