SQL在特定日期返回一个值

时间:2014-02-06 01:27:15

标签: sql date select

我正在尝试在特定日期找到一个值。

我的数据看起来像

Date        Value
2013-11-02   5
2013-10-10   8
2013-09-14   6
2013-08-15   4

如何确定2013-09-30的价值?

显然答案是6但我无法弄清楚SQL代码。

由于

1 个答案:

答案 0 :(得分:1)

您可以使用order by并限制行数。在SQL Server语法(以及Sybase和Access)中:

select top 1 t.*
from table t
where date <= '2013-09-30'
order by date desc;

在MySQL(和Postgres)中:

select t.*
from table t
where date <= '2013-09-30'
order by date desc
limit 1;

在Oracle中:

select t.*
from (select t.*
      from table t
      where date <= '2013-09-30'
      order by date desc
    ) t
where rownum = 1

编辑:

并且,它是一种SQL标准方式(应该适用于任何数据库):

select t.*
from table t
where date = (select max(date)
              from table t2
              where date <= '2013-09-30'
             );