具有多个字段的GROUP BY(SQL Server 2000)

时间:2014-09-02 16:37:29

标签: sql-server-2000

我有一个包含3列的表格:

记录

ID  |  xDate  |  xUser

我想为每个ID的最后xDate返回xUserxDateID

这就是我所拥有的:

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  

1 个答案:

答案 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)