2017-10-09 82 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 

的問題是,我有時會得到2或3記錄相同的公司+帳戶與不同的tr由於日期完全相同,因此在執行內部連接時,ansfer_id的行爲是錯誤的。

最後,我不得不使用MS Access執行此查詢

+0

請添加一些樣本記錄,以展示意外的行爲,以及這些記錄的預期結果。 [如何問一個好的SQL問題](http://meta.stackoverflow.com/a/271056/3820271)。 – Andre

+0

不能依賴每個公司/賬戶的最大transfer_id(通過字母排序)是最新的嗎? – June7

回答

1

然後選擇最大(或)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