我有两个类似的表
表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
我们必须连接表1中的id列和DOB列以及表2中的日期列。如果日期不匹配,那么我们必须加入下一个最长日期列
提前感谢
您可以使用以下查询-我想,如果dob和日期栏不匹配,我们应该选择和最长日期相关的金额。请澄清,以便我可以相应地更改sql。
select id, dob, name, amount
from
(select a.id,a,dob,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