我希望基于第一个表中的特定值,从另一个表中的数据子集左联接一个值。以下是示例表:
table1
-----------------
key date
1 2020-01-02
2 2020-03-02
table2
-----------------
key date value
1 2019-12-13 a
1 2019-12-29 b
1 2020-01-14 c
1 2020-02-02 d
2 2019-11-01 e
2 2019-12-02 f
2 2020-04-29 g
基于 date
对于中的特定键值 table1
,我要选择最近的( MAX(date)
)从 table2
,在哪里 temp
包含该键值的所有行,其中 date
是在 date
从 table1
.
因此,生成的表如下所示:
key date value
1 2020-01-02 b
2 2020-03-02 f
我想我可以使用某种类型的逻辑来为每个人创建临时表 key
价值何处 temp.date <= table1.date
,然后选择 MAX(temp.date)
从temp表中选择 value
. 例如,的temp表 key = 1
可能是:
date value
1 2019-12-13 a
1 2019-12-29 b
然后它将左连接值b key = 1
,自max( date
) = 2019-12-29. 我不确定这是否是解决我问题的正确逻辑;任何帮助都将不胜感激!
1条答案
按热度按时间rxztt3cl1#
可以使用相关子查询:
请注意,并非所有数据库都支持该标准
fetch first
条款。您可能需要使用limit
或者select top (1)
或者其他什么取决于你的数据库。