2016-10-31 11 views
3

날짜 필드가있는 두 행 사이를 지난 일 수를 찾아야하는 경우가 있습니다. 계산을 수행해야하는 행은 정렬되지 않습니다. 여기 두 날짜 사이의 날짜 수를 얻는 방법

나는 날짜별로 정렬하고 절판별로 그룹화 마지막 두 개의 트랜잭션을 유지해야합니다,

Folio DATE  

1  6/1/2015 
2  4/1/2015 
1  3/1/2015 
4  2/1/2015 
1  1/1/2015 

기본적으로 테이블의 구조입니다. 따라서이 예에서 2015 년 1 월 1 일에 Folio 1에 의한 트랜잭션은 무시됩니다.

다음을 수행해야한다고 가정합니다. 1. 폴더 번호 별 그룹 2. Folio별로 마지막 두 트랜잭션 사이의 날짜 만 계산합니다. 예를 들어 Folio # 1에는 2015 년 6 월 1 일과 2015 년 3 월 1 일의 거래 만 포함됩니다.

내가 찾고 그 결과가 밖으로

Folio FirstDATE LastDate #ofDays 

1  3/1/2015  6/1/2015 90 

모든 MySQL의 장점? 내 기술은 아직 초보자 영역에 있습니다. 고맙습니다!

UPDATE :

LatestClosing  First Closing numofdays 
7/20/2016   5/9/2006   3725 

이 내가해야 할 것입니다 :

SELECT 
    SubQuery.`Folio Number`, 
    SubQuery.LatestClosing, 
    SubQuery.FirstClosing, 
    DATEDIFF(SubQuery.LatestClosing, SubQuery.FirstClosing) AS numofdays 
FROM (SELECT 
    Subquery.`Folio Number`, 
    SubQuery.LatestClosing, 
    SubQuery.FirstClosing 
    FROM (SELECT t.`Folio Number`, 
     MAX(t.`Closing Date`) AS LatestClosing, 
     (SELECT 
      s.`Closing Date` 
     FROM MLSFinalimport s 
     WHERE t.`Folio Number` = s.`Folio Number` 
     ORDER BY s.`Closing Date` DESC 
     LIMIT 1, 1) AS FirstClosing, 
    FROM MLSFinalimport t 
    GROUP BY t.`Folio Number`) SubQuery) SubQuery 

이이처럼 보이는 결과를 생성하는 : 내가 관리했습니다

은 다음에 올 . 그러나 각 행에 대해 "Folio Number"라는 원래 열을 추가하려고 시도했습니다. 어떻게해야합니까?

대단히 감사합니다.

+1

http://stackoverflow.com/questions/7937288/calculate-the-time-difference-between : 당신이 LIMIT/OFFSET와 상관 쿼리를 사용하여 시도 할 수 있도록 아마 반대 .. MySQL은 윈도우 기능을 지원하지 않습니다 -of-two-rows –

+0

링크를 확인하면 Google DATE_ADD() 함수 - W3Schools www.w3schools.com/sql/func_date_add.asp 에서 많은 자원을 찾을 수 있습니다. – katmanco

+0

2015 년 3 월 1 일부터 2015 년 1 월 30 일 사이에 90 일이 소요될 것으로 예상되는 경우 나에게 다른 캘린더로 작업하게됩니다. 그 날짜 사이에 92 일이 있습니다. –

답변

2

여기에 MySQL을위한 찬성?

SELECT p.folio,p.max_d,p.second_d,DATEDIFF(p.max_d,p.second_d) as NumOfDays 
FROM (
    SELECT t.folio,MAX(t.date) as max_d, 
      (SELECT s.date FROM YourTable s 
      WHERE t.folio = s.folio 
      ORDER BY s.date DESC 
      LIMIT 1,1) as second_d 
    FROM YourTable t 
    GROUP BY t.folio) p 
+0

미국 날짜예요.) –

+0

죄송합니다. 월/일/년 예를 사용 중입니다 ... – user2041357

+0

아, 'ddmmyy' : 예, 지금 사용해보세요. @ user2041357 – sagi

관련 문제