我正在尝试进行表联接,其中组合键是访问号和快照日期,而感兴趣的数据是Status。这是简单连接的样子:
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
[我的障碍是,在SNAPSHOT_DATE的精确匹配中(20%的时间)未填充感兴趣的数据状态Status。有时它与表A中的SNAPSHOT_DATE相差+/-1。仍然存在记录匹配,但表B只会返回NA。
[我正在尝试编写一个联接案例,以检查Status是否以NA返回,以查看Table_B前一天的组合键,以及第二天的组合键,以查看是否有有效值(即,不适用)。
在下表中,我希望查询能够识别出第3行返回一个NA,因此,它会在前一天或第二天查找有效值。它应该选择第4行具有非NA值,然后返回该值。
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 ;