2014-06-23 1 views
-1

데이터 가져 오기 시작 날짜가 마지막 데이터가 삽입 된 날짜를 기반으로하는 방식으로 테이블에서 데이터를 가져와야합니다.지난 10 일 최근 사용 가능한 데이터를 기반으로 한 값

예를 들어 지금부터 24/01/2011의 데이터가 있습니다. 그러나 특정 ID에 대해서는 24/01/2012에 마지막 데이터를 삽입했습니다. 이 이드의 경우이 데이터를 14/01/2012에서 24/01/2012으로 가져와야합니다.

데이터가 삽입 된 마지막 날짜를 알 수 없으므로 먼저 최대 날짜를 가져와야하며 이에 따라 시작 날짜를 찾을 수 있습니다. 그렇게 할 수있는 빠른 방법이 있습니까? 따라서 모든 것이 단일 및 빠른 쿼리로 처리됩니다.

답변

0

나는 당신의 질문을 이해한다면, 대답은 다음과 같을 수 있습니다

SELECT * 
    FROM table_1 t1 
WHERE table_1.start_date >= to_date('14/01/2012', 'DD-MM-YYYY') 
    AND table_1.start_date <= 
     (SELECT MAX(t11.insert_date) FROM table_1 t11 WHERE t1.id = t11.id) 
+0

나는 (데이터가 흥미가있을 때) 단일 열을 가지고있다. 일부 기간의 데이터를 찾아야합니다. 하지만 그 범위에 대해 나는 그것이 10 일 기간이 될 것을 알고 있지만 범위 시작 및 종료 date.So 먼저 내가 그 기간을 기반으로 다음 종료 날짜를 얻을 필요가 범위를 알 수 없습니다. – sanjay

+1

위의 대답은 시작 날짜를 하드 코딩하므로 작동하지 않지만 필요한 시작 날짜가 명시 적으로 표시된 질문은 마지막으로 삽입 된 데이터를 기반으로합니다. 2012 년 1 월 24 일의 가장 최근 삽입 날짜가있는 항목의 예가 있었기 때문에 해당 항목의 시작일은 14/01/2012이지만 모든 데이터의 고정 시작일이 아닙니다. – mc110

+0

날짜를 하드 코딩 할 필요가 없습니다. 그것은 단지 예일뿐입니다. 올바른 날짜가있는 변수를 넣을 수 있습니다. 그럼 다음과 같을 것이다 : 된 table_1의 T1 * FROM SELECT WHERE table_1.start_date> = l_some_date AND table_1.start_date <= (T11 FROM 된 table_1의 MAX (t11.insert_date)을 선택 WHERE t1.id = t11.id) – Arek

0

아래 쿼리는 시작 날짜가 마지막 시작 날짜보다 크거나 같은 모든 행 선택 - 10 일. 나는 그것이 firebird를 위해 정확하다고 믿는다.

SELECT * 
FROM table t1 
WHERE t1.startdate >= dateadd(-10 day to MAX(t1.startdate) 
관련 문제