问题描述
我有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