[英]Selecting max value on subset of data based on other column's value
我希望根据第一个表中的特定值从另一个表中的数据子集左连接一个值。 以下是示例表:
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
根据来自table1
的特定键值的date
值,我想 select 来自table2
的最新( MAX(date)
),其中temp
包含该键值的所有行,其中date
位于table1
的date
或之前。
因此,结果表如下所示:
key date value
1 2020-01-02 b
2 2020-03-02 f
我在想我可以使用某种类型的逻辑来为temp.date <= table1.date
的每个key
创建临时表,然后从临时表中创建 select MAX(temp.date)
并左加入value
。 例如, key = 1
的临时表将是:
date value
1 2019-12-13 a
1 2019-12-29 b
然后它将离开加入值 b 为key = 1
,因为 MAX( date
) = 2019-12-29。 我不确定这是否是 go 关于我的问题的正确逻辑; 任何帮助将不胜感激!
您可以使用相关子查询:
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
或select top (1)
或其他内容,具体取决于您的数据库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.