2016-08-26 2 views
1

SQL에서 프로젝트 집합에 대한 두 번째 가장 최근 날짜를 반환 할 수 있지만 '선택 목록에서 하나의 식만 지정할 수 있습니다. 하위 쿼리는 EXISTS에 도입되지 않았습니다. ' 내 코드는 다음과 같습니다.찾기 두 번째 가장 최근 날짜 JOINS 함께 SQL

SELECT ProjectId, max(CreatedDateTime) 
    FROM NTNote.dbo.nProjectReference P          
    INNER JOIN NTNote.dbo.nJournal J         
     ON J.JournalID = P.JournalID 
     Where CreatedDateTime < (SELECT max(CreatedDateTime), projectid 
     FROM NTNote.dbo.nProjectReference P         
      INNER JOIN NTNote.dbo.nJournal J         
      ON J.JournalID = P.JournalID 
      Group by ProjectId) 
     Group by ProjectId 

어떤 도움을 주시면 감사하겠습니다!

답변

3

원하는 출력 (SQL 서버)에 다음 코드를 사용하십시오.

with cte_grp 
as 
(SELECT ProjectId,CreatedDateTime,ROW_NUMBER() OVER(PARTITION BY ProjectId ORDER BY CreatedDateTime desc) RNo 
    FROM NTNote.dbo.nProjectReference P          
    INNER JOIN NTNote.dbo.nJournal J         
     ON J.JournalID = P.JournalID) 

     SELECT * 
     FROM cte_grp 
     WHERE RNO=2 
+0

완벽하게 작동합니다! 감사! – reggie86

0

당신은

Row_Number() over (partition by ProjectId order by CreatedDateTime desc) as rownum 

사용하고 출력을 얻기 위해 술어로 2를 사용할 수 있습니다.