2014-02-06 52 views
0

我試圖在特定日期查找值。SQL在特定日期及時返回值

我的數據看起來像

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

我怎樣才能確定什麼值是在2013年9月30日?

很明顯,答案是6,但我無法弄清SQL代碼。

感謝

+0

你使用了哪個數據庫? –

+0

由於2013-09-30沒有出現在您的數據中,因此回答爲6並不明顯。我現在假設日期表示狀態變化,並且狀態(值)保持在日期之間的最近值。如果是這樣的話,你應該在你的問題中說清楚,以便每個人都在同一頁面上。 – jbaums

回答

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' 
      ); 
+0

道歉不清楚,這是我的第一篇文章。非常感謝你的幫助,你給了我幾個選項來運行。 – user3277669

相關問題