我有兩個表,我們稱它們為 A 和 B。表 A 有關于特定事件的資料,并且有一個唯一的鍵列對event_date和person。表 B 具有隨時間推移的聚合資料,因此具有關鍵列start_date和。對于給定的人,表 B 中的日期范圍永遠不會重疊,因此對于復合鍵來說不是絕對必要的。end_datepersonend_date
下面是兩個例子
SELECT event_date, person
FROM A
| 活動日期 | 人 |
|---|---|
| 2021-10-01 | 愛麗絲 |
| 2021-10-01 | 鮑勃 |
| 2021-10-05 | 鮑勃 |
| 2021-11-05 | 鮑勃 |
SELECT start_date, end_date, person, attribute
FROM B
| 開始日期 | 結束日期 | 人 | 屬性 |
|---|---|---|---|
| 2021-10-01 | 2021-11-01 | 愛麗絲 | 屬性 1 |
| 2021-10-01 | 2021-11-01 | 鮑勃 | 屬性 1 |
| 2021-11-01 | 2021-12-01 | 鮑勃 | 屬性 2 |
我想將該attribute列添加到表 A。合并應考慮該event_date列屬于哪個日期范圍并選擇適當的屬性。合并后的最終表應如下所示:
| 活動日期 | 人 | 屬性 |
|---|---|---|
| 2021-10-01 | 愛麗絲 | 屬性 1 |
| 2021-10-01 | 鮑勃 | 屬性 1 |
| 2021-10-05 | 鮑勃 | 屬性 1 |
| 2021-11-05 | 鮑勃 | 屬性 2 |
如何解決這個問題?
uj5u.com熱心網友回復:
您可以嘗試JOIN按BETWEEN日期。
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/456372.html
