我有一个包含3列的表格:
记录:
ID | xDate | xUser
我想为每个ID
的最后xDate
返回xUser
,xDate
和ID
。
这就是我所拥有的:
SELECT
ID, Last = Max(xDate)
FROM
History
GROUP BY
ID
ORDER BY
Last DESC
只要我将xUser
添加到SELECT
,它就会停止工作。
非常感谢任何帮助。
ID | xDate | xUser
01 2014-1 Joe
01 2014-2 Bob
01 2014-3 Tom
02 2014-1 Joe
02 2014-2 Bob
02 2014-3 Tom
期望的结果:
ID | xDate | xUser
01 2014-3 Tom
02 2014-3 Tom
答案 0 :(得分:1)
您需要预先查询每个ID,最后一个日期...然后从中重新加入BOTH组件上的历史记录表以获取与该ID对应的名称
SELECT
H2.ID,
H2.xDate,
H2.Name
FROM
( select ID, max(xDate) ThisDate
from History
Where xdate > '2014-09-01'
group by ID ) PreCheck
JOIN History H2
on PreCheck.ID = H2.ID
AND PreCheck.ThisDate = H2.xDate
ORDER BY
H2.xDate DESC
如果您在指定日期有多个条目,除非日期确实是最近一次条目的完整日期/时间,否则您的问题将会出现。
此外,最好在你的桌子上有一个索引(ID,xDate)