基于日期的mysql查询

时间:2012-01-06 21:48:04

标签: mysql sql date greatest-n-per-group

我有很多记录,搜索必须根据“有效来自”和“公司”字段提供唯一结果。

以下是4条记录的示例:

RECORD NO.  COMPANY        VALID_FROM  VALID_TO    VALUE   
1           BANCO CENTRAL  10/11/11    31/12/11  123.45
2           BANCO CENTRAL  20/11/11    31/12/11  120.34
3           EXTERIOR BANK  20/11/11    31/12/11  115.45
4           BANCO CENTRAL  25/11/11    31/12/11  115.45

根据当前日期,我只需要显示每家公司的一份结果。 例如,如果今天是26/11/11,则查询将显示记录3和4(公司Banco Central的记录4,具有稍后的'有效期'日期,替换先前的记录(1和2)。 ,作为唯一的一个,也会表现出来。

如果今天是15/11/11,那么它应该显示第一条记录(因为记录2,3和4的值的有效期是未来)

如果今天是20/11/11,那么它将显示记录2和3

如果有人能告诉我SQL查询应该是什么样子将非常感激

1 个答案:

答案 0 :(得分:1)

您可以加入子查询:

select
    *
from
    banks b1
    inner join (select company, max(fromdate) as maxdate from banks where fromdate <= now()) b2 on
        b1.company = b2.company
        and b1.fromdate = b2.maxdate