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