仅在特定日期之前如何关联数据?

时间:2019-04-15 21:18:52

标签: mysql powerbi business-intelligence

基本上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

table2看起来像这样

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

所以我想关联这些表,但必须确保table2 ID必须与table1 ID中的最后日期相关

因此,基本上,表2中“ 4/2/2019”中的“ DIE9240”必须与表1中“ 2/2/2019”中的“ DIE9240”相关。它不能与“ 4/2/2019”相关联,因为它是同一日期(不在此日期之前),也不能与“ 1/2/2019”相关,因为它不是该日期之前的最后一个日期。

反正有这样做吗? 非常感谢

1 个答案:

答案 0 :(得分:0)

您可以像这样联接表:

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)

您可以将*替换为要选择的列名称。
您已经用MySql和SQLite标记了您的问题,并且如果您使用的是SQLite,则示例数据中日期的格式不可比,并且不会产生正确的结果,因为将SQLite日期视为字符串。
您应该将格式更改为YYYY-MM-DD
参见demo