我有两个表,让我们称它们为A和B。表A有关于特定事件的数据,并且有一个唯一的键列对event_date
和person
。表B具有随时间的聚合数据,因此具有关键字列start_date
、end_date
和person
。表B中的日期范围对于给定的人来说永远不会重叠,因此end_date
对于复合键来说并不是绝对必要的。
以下是的两个例子
SELECT event_date, person
FROM A
event_date | 人 |
---|---|
2021-10-01 | 爱丽丝 |
2021-10-01 | Bob |
2021-10-05 | Bob |
2021-11-05 | Bob |
您可以在BETWEEN
日期之前尝试JOIN
。
SELECT a.*,b.attribute
FROM A a
JOIN B b
ON a.event_date BETWEEN b.start_date AND b.end_date
AND a.person = b.person