2014-02-06 2 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 함께 할 행의 수를 제한 할 수 있습니다. MySQL의에서

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

(그리고 포스트 그레스) : 오라클에서

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

: SQL 서버 구문 (사이베이스 및 액세스)에서

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

관련 문제