我正在嘗試加入 2 個(gè)表。表 1 包含 Id、日期列和值列。表 2 還有 Id、日期列和不同的值列。我需要通過相同的記錄 ID 和表 1 中最接近的小于表 2 中日期的日期將表 1(如左圖)與表 2(右圖)連接起來。因此,連接將首先匹配 ID,然后匹配它將為表 2 中的日期查找表 1 中最接近的小于日期。因此,如果表 1 中沒有小于表 2 的相應(yīng) ID 的日期,則不會(huì)添加表 2 的值,因?yàn)镮D。我想顯示表 1 中的所有記錄,并且只顯示表 2 中的值列。因此,如果表 1 中有 100,000 行,那么我希望最終的聯(lián)接表也有 100,000 行。這是我希望實(shí)現(xiàn)的簡(jiǎn)化版本和示例。在簡(jiǎn)化示例中,表 2 中只有 1 個(gè)值列,但我有 15 個(gè)。下面是創(chuàng)建虛擬表的 SQL 代碼:drop table if exists table1;drop table if exists table2;create table table1 (id text, date date, val int);create table table2 (id text, date date, val int);insert into table1 (id, date, val)values ('sn1', '2010/01/26', 10), ('sn1', '2010/01/25', 9), ('sn1', '2010/01/21', 8), ('sn2', '2010/01/23', 9), ('sn2', '2010/01/22', 7), ('sn1', '2010/01/19', 10);insert into table1 (id, date, val) values ('sn2', '2010/01/18', 11);select * from table1 order by 1,2;insert into table2 (id, date, val) values ('sn1', '2010/01/26', 20);insert into table2 (id, date, val) values ('sn2', '2010/01/23', 99);insert into table2 (id, date, val) values ('sn2', '2010/01/17', 50);insert into table2 (id, date, val) values ('sn2', '2010/01/21', 60);insert into table2 (id, date, val) values ('sn1', '2010/01/20', 0);select * from table2 order by 1,2;下面顯示了所需的結(jié)果。它具有表 1 中的所有列和行以及表 2 中的最后一列。+------+------------+------+------+| id | date | val1 | val2 |+------+------------+------+------+| sn1 | 2010-01-19 | 10 | 0 || sn1 | 2010-01-21 | 8 | || sn1 | 2010-01-25 | 9 | || sn1 | 2010-01-26 | 10 | 20 || sn2 | 2010-01-18 | 11 | 60 || sn2 | 2010-01-22 | 7 | || sn2 | 2010-01-23 | 9 | 99 |+------+------------+------+------+任何幫助將不勝感激,無論是 SQL(首選)還是 Python。
查看完整描述