SELECT SomeId, ModifiedUser, MAX(ModifiedDate)
FROM SomeTable
GROUP BY SomeId, ModifiedUser
然后我得到这样的结果:
1000 User1 Mar 30 2011
1000 User2 Jun 25 2011
1001 User3 Mar 21 2011
1001 User4 Jun 20 2011
如何修改查询以便只得到
1000 User2 Jun 25 2011
1001 User4 Jun 20 2011
基本上取第一个查询结果,然后按 SomeId 与最新的 ModifiedDate 和 ModifiedUser 连接到最新的 ModifiedDate 进行分组
最佳答案
您必须执行 2 个查询并加入它们。
第一个查询:
SELECT SomeId, Max(ModifiedDate)
FROM SomeTable GROUP BY SomeId
这会挑出“唯一信息”。然后,您加入:
SELECT SomeId, ModifiedUser, ModifiedDate
from SomeTable
给你所有的数据。所以,完整的查询是:
SELECT SomeId, ModifiedUser, ModifiedDate
FROM SomeTable
INNER JOIN (
SELECT SomeId, Max(ModifiedDate) maxmod
FROM SomeTable
GROUP BY SomeId) uniqueinfo ON SomeTable.SomeId = uniqueinfo.SomeId
AND ModifiedDate = uniqueinfo.maxmod
关于SQL 按问题分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6444562/