繁体   English   中英

根据其他列的值选择数据子集的最大值

[英]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位于table1date或之前。

因此,结果表如下所示:

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子句。 您可能需要使用limitselect top (1)或其他内容,具体取决于您的数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM