在 GROUP BY 中选择具有最大日期的整行
Posted
技术标签:
【中文标题】在 GROUP BY 中选择具有最大日期的整行【英文标题】:SELECT entire rows with max date in a GROUP BY 【发布时间】:2018-03-21 00:16:12 【问题描述】:我知道以前有人问过这个问题,但我看到的答案从未考虑过日期完全相同的情况。
我有下面的汇款表格。
我需要每组CORPORATION + ACCOUNT
的最新转账的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
问题是,由于日期完全相同,在执行 inner join 时,有时我会为相同的 CORPORATION + ACCOUNT 获得 2 或 3 条不同 transfer_id 的记录.
最后,我必须使用 MS ACCESS 来执行这个查询
【问题讨论】:
请添加一些示例记录,以显示不希望的行为,以及这些记录的预期结果。 How to ask a good SQL question. 不能依赖每个公司/帐户的最大 transfer_id(按 alpha 排序)是最新的吗? 【参考方案1】:然后选择Max(或Min)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
【讨论】:
以上是关于在 GROUP BY 中选择具有最大日期的整行的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式选择 DataGridView 中的整行(不使用 ...Rows[].Selected)
我们如何在具有GROUP BY子句的查询中选择非聚合列,而GROUP BY子句在功能上不依赖于GROUP BY子句中的列?