如何关联数据但前提是在特定日期之前?
How to relate a data but only if before a specific date?
基本上 table1 看起来像这样
DATE ID PCS
1/2/2019 DIE6660 8
1/2/2019 DIE9240 9
2/2/2019 DIE9240 7
2/2/2019 DIT8990 1
2/2/2019 DIT6690 5
3/2/2019 DIE6770 2
4/2/2019 DIE9240 6
表 2 看起来像这样
DATE ID CON
1/2/2019 DIE9240 B
2/2/2019 DIE9240 B
2/2/2019 DIT6690 B
3/2/2019 DIE6770 N
4/2/2019 DIE9240 N
所以我想关联这些表,但关系必须是表 2 ID 必须与表 1 ID 中它之前的最后一个日期关联
所以基本上表 2 中“4/2/2019”中的 "DIE9240" 必须与表 1 中“2/2/2019”中的 "DIE9240" 相关。它不能与“4/2/2019”相关,因为它是同一日期(不早于它),也不能与“1/2/2019”相关,因为它不是它之前的最后一个日期。
有办法吗?
非常感谢
您可以像这样加入表格:
select *
from table1 t1 inner join table2 t2
on
t2.id = t1.id
and
t1.date = (select max(date) from table1 where id = t2.id and date < t2.date)
您可以将 *
替换为您想要 select 的列名。
您已经用 MySql 和 SQLite 标记了您的问题,如果您使用的是 SQLite,那么样本数据中的日期格式不可比,也不会产生正确的结果,因为 SQLite 日期是被视为字符串。
您应该将格式更改为 YYYY-MM-DD
。
见 demo.
基本上 table1 看起来像这样
DATE ID PCS
1/2/2019 DIE6660 8
1/2/2019 DIE9240 9
2/2/2019 DIE9240 7
2/2/2019 DIT8990 1
2/2/2019 DIT6690 5
3/2/2019 DIE6770 2
4/2/2019 DIE9240 6
表 2 看起来像这样
DATE ID CON
1/2/2019 DIE9240 B
2/2/2019 DIE9240 B
2/2/2019 DIT6690 B
3/2/2019 DIE6770 N
4/2/2019 DIE9240 N
所以我想关联这些表,但关系必须是表 2 ID 必须与表 1 ID 中它之前的最后一个日期关联
所以基本上表 2 中“4/2/2019”中的 "DIE9240" 必须与表 1 中“2/2/2019”中的 "DIE9240" 相关。它不能与“4/2/2019”相关,因为它是同一日期(不早于它),也不能与“1/2/2019”相关,因为它不是它之前的最后一个日期。
有办法吗? 非常感谢
您可以像这样加入表格:
select *
from table1 t1 inner join table2 t2
on
t2.id = t1.id
and
t1.date = (select max(date) from table1 where id = t2.id and date < t2.date)
您可以将 *
替换为您想要 select 的列名。
您已经用 MySql 和 SQLite 标记了您的问题,如果您使用的是 SQLite,那么样本数据中的日期格式不可比,也不会产生正确的结果,因为 SQLite 日期是被视为字符串。
您应该将格式更改为 YYYY-MM-DD
。
见 demo.