如何在日期列上查询 2 个表,如果不存在匹配的日期,那么我们必须加入下一个最大日期
Posted
技术标签:
【中文标题】如何在日期列上查询 2 个表,如果不存在匹配的日期,那么我们必须加入下一个最大日期【英文标题】:How to query 2 tables on a date column ,if matching date doesn't exist then we have to join with next maximum date 【发布时间】:2020-09-29 19:31:02 【问题描述】:我有 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 列。如果日期不匹配,那么我们必须加入下一个最大日期列
提前致谢
【问题讨论】:
“下一个最大日期”是什么意思? - 对于 deb - 什么应该是正确的数据?会是7000吗? 【参考方案1】:您可以使用以下查询 - 我假设,如果 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
【讨论】:
以上是关于如何在日期列上查询 2 个表,如果不存在匹配的日期,那么我们必须加入下一个最大日期的主要内容,如果未能解决你的问题,请参考以下文章