SQL / Teradata - 如何从一个 table 与另一个 TABLE 中的日期列相关的记录中获取最新记录?

SQL / Teradata - How can I get the most recent record from one table RELEVANT TO A DATE COLUMN IN ANOTHER TABLE?

下面有两个表格。我想查询检查任何给定日期(假设 A.Date_Added 后 7 天),我想根据 Table B 查看 ID 的当前状态。 所以, A.Date_Added 7 天后,每个 ID 的最新状态是什么? 最后我想做 30 天、60 天等,但只能应用 7 天的逻辑给大家。

Table答:

ID Date_Added
1 12/04/2019
2 01/05/2020
3 03/04/2020

Table乙:

ID Date_of_Status_Change Status
1 12/06/2020 Happy
1 01/08/2020 Sad
1 02/12/2020 Angry
2 01/07/2020 Sad
2 01/11/2020 Angry
2 02/24/2020 Sad
3 03/05/2020 Happy
3 03/08/2020 Confused

最终结果:

ID Date_Added Status_Seven_Days_After_Added
1 12/04/2019 Happy
2 01/05/2020 Angry
3 03/04/2020 Confused
select a.ID, a.Date_Added, b.Status
from tableA as a
join tableB as b
  on a.ID = b.ID 
  -- 7 days after A.Date_Added
 and b.Date_of_Status_Change between a.Date_Added and a.Date_Added +7
qualify
   row_number(*) -- most recent status for each ID
   over (partition by a.ID
         order by b.Date_of_Status_Change desc) = 1

如果某个 ID 没有匹配的行,您可能想要切换到 Left Join。