我正在尝试在特定日期找到一个值。
我的数据看起来像
Date Value
2013-11-02 5
2013-10-10 8
2013-09-14 6
2013-08-15 4
如何确定2013-09-30的价值?
显然答案是6但我无法弄清楚SQL代码。
由于
答案 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'
);