如何在日期列上查询2个表,如果不存在匹配日期,则必须与下一个最大日期联接

问题描述

我有2张桌子,如下所示

表1

id   dob         name
1   01/01/1990   victor
2   01/01/1991   deb
3   01/01/1992   Mat

表2

id   Date         amount
1   01/01/1990    100
2   12/11/1990    700
2   12/30/1990    455
2   01/02/2014      7000
3   12/30/1991    800
3   06/22/1991    332

我想要输出如下

id   dob         name.    amount
1   01/01/1990   victor   100
2   01/01/1991   deb      455
3   01/01/1992   Mat      800

我们必须加入table1的id列和dob列以及table2的date列。如果日期不匹配,那么我们必须加入下一个最大日期列

预先感谢

解决方法

您可以使用以下查询- 我假设,如果dob与日期列不匹配,我们应该选择绑定到最大日期的金额。请澄清一下,以便我可以相应地更改sql。

select id,dob,name,amount 
from
(select a.id,a,a.name,b.amount,b.date,row_number() over(partition by a.id order by a.id,b.date desc) rn
from
table1 a
left join table2 b on a.id = b.id ) rs
where case when date = dob then 1 else rs.rn end=1