我怎样才能做一个 table 加入,其中复合键是一个访问号码和一个日期 +/- 1 天

How can I do a table join where the composite key is an access number and a date +/- 1 day

我正在尝试进行 table 连接,其中复合键是访问号和快照日期,感兴趣的数据是状态。下面是简单连接的样子:

SELECT A.Access_Num, B.Access_Num, A.SNAPSHOT_DATE, B.SNAPSHOT_DATE, B.Status
FROM A
INNER JOIN B
ON A.Access_Num = B.Access_Numb AND A.SNAPSHOT_DATE = B.SNAPSHOT_DATE

我的障碍是感兴趣的数据 Status 没有填充在 SNAPSHOT_DATE 的精确匹配上(20% 的时间)。有时它与 table A 中的 SNAPSHOT_DATE 相差 +/- 1。仍然有记录匹配,但 table B 将只是 return NA。

我正在尝试编写一个连接案例,检查 Status returns 是否为 NA,以查看前一天 Table_B 的复合键和下一天的复合键一天看看是否有可用的有效值(即,不是 NA)。

在下面的 table 中,我希望查询识别第 3 行 return 是一个 NA,因此它会查看前一天或第二天以找到有效值。它应该发现第 4 行有一个非 NA 值,return 那一个。

Row     A.Access_Num    B.Access_Num    A.SNAPSHOT_DATE    B.SNAPSHOT_DATE  B.STATUS
1       11              11              12-12-2018         12-12-2018       Y
2       11              11              12-13-2018         12-13-2018       Y
3       13              13              12-05-2018         12-05-2018       NA             
4       13              13                                 12-06-2018       Y

您可以在 ON 子句中使用不等式:

SELECT A.Access_Num, B.Access_Num, A.SNAPSHOT_DATE, B.SNAPSHOT_DATE, B.Status
FROM A INNER JOIN
     B
     ON A.Access_Num = B.Access_Numb AND
        A.SNAPSHOT_DATE >= B.SNAPSHOT_DATE - INTERVAL 1 DAY AND
        A.SNAPSHOT_DATE <= B.SNAPSHOT_DATE + INTERVAL 1 DAY ;