Sql 基于其他列的值在数据子集上选择最大值

Sql 基于其他列的值在数据子集上选择最大值,sql,Sql,我希望根据第一个表中的特定值,将来自另一个表的数据子集中的值左联接。以下是示例表: table1 ----------------- key date 1 2020-01-02 2 2020-03-02 根据表1中特定键值的日期值,我想从表2中选择最近的MAXdate,其中temp包含该键值的所有行,其中date在表1中的日期上或之前 因此,生成的表如下所示: key date value 1 2020-01-02 b 2 2020-03-02

我希望根据第一个表中的特定值,将来自另一个表的数据子集中的值左联接。以下是示例表:

table1
-----------------
key    date
1    2020-01-02
2    2020-03-02
根据表1中特定键值的日期值,我想从表2中选择最近的MAXdate,其中temp包含该键值的所有行,其中date在表1中的日期上或之前

因此,生成的表如下所示:

key    date    value
1    2020-01-02    b
2    2020-03-02    f

我想我可以使用某种类型的逻辑为每个键值创建临时表,其中temp.date可以使用相关子查询:

select t1.*,
       (select t2.value
        from table2 t2
        where t2.key = t1.key and t2.date <= t1.date
        order by t2.date desc
        fetch first 1 row only
       ) as value
from table1 t1;

请注意,并非所有数据库都支持标准的fetch first子句。根据您的数据库,您可能需要使用limit或选择top 1或其他内容。

您使用的是什么DBMS?回答问题并添加标签。谢谢!!这肯定是我一直在寻找的解决方案类型,但我不知道语法会是什么样子
date    value
1    2019-12-13    a
1    2019-12-29    b
select t1.*,
       (select t2.value
        from table2 t2
        where t2.key = t1.key and t2.date <= t1.date
        order by t2.date desc
        fetch first 1 row only
       ) as value
from table1 t1;