2017-10-09 6 views
0

이전에 물어 보았지만 지금까지 해왔 던 답변은 날짜가 정확히 같은 경우를 고려하지 않았습니다.GROUP BY의 최대 날짜가 전체 행을 선택하십시오

송금 가능한 계좌는 다음과 같습니다.

table

나는이 내 현재 쿼리입니다 CORPORATION + 계정

의 각 그룹에 대한 최신 전송의 TRANSFER_ID 필요

SELECT tt.transfer_id, 
     tt.corporation, 
     tt.account, 
     tt.date 
    FROM Transfers tt INNER JOIN 
     (SELECT t.corporation, 
       t.account, 
       MAX(t.date) AS day_last_transfer 
      FROM Transfers t 
     GROUP BY t.corporation, t.account) j 
    ON tt.corporation = j.corporation 
    AND tt.account = j.account 
    AND tt.date = j.day_last_transfer 

문제가 있다는 것입니다 I 때로는 2 ~ 3 개의 레코드를 얻을 수도 있습니다 CORPORATION + Account 다른 tr 내부 참여를 수행 할 때 ansfer_id가 정확히 일치하는 날짜로 인해에 참여합니다.

마지막으로, 나는 그런 선택이 쿼리를

+0

가 원하지 않는 행동을 보여줍니다 일부 샘플 레코드를 추가하십시오 , 그리고이 기록들로부터 예상되는 결과. [좋은 SQL 질문하기] (http://meta.stackoverflow.com/a/271056/3820271). – Andre

+0

각 기업/계정이 최신이되도록 max transfer_id (알파 정렬 기준)에 의존 할 수 없습니까? – June7

답변

1

을 수행하는 MS 액세스를 사용할 필요가 최대 (또는 최소) ID :

SELECT 
    Max(tt.transfer_id) As last_transfer_id, 
    tt.corporation, 
    tt.account, 
    tt.date 
FROM 
    Transfers tt 
INNER JOIN 
    (SELECT t.corporation, 
     t.account, 
     MAX(t.date) AS day_last_transfer 
    FROM Transfers t 
    GROUP BY t.corporation, t.account) j 
    ON tt.corporation = j.corporation 
    AND tt.account = j.account 
    AND tt.date = j.day_last_transfer 

GROUP BY 
    tt.corporation, 
    tt.account, 
    tt.date