0

我有一个快速的问题,我似乎无法弄清楚。我正在尝试列出仅显示最新评论的最终用户项目(只是一个示例)。

ID  Name    EventDate     Type
1   PC      12/12/2012    End User Items 
1   PC      11/12/2012    End User Items 
1   PC      10/11/2012    End User Items 
2   Mobile  12/12/2012    End User Items 
2   Mobile  11/01/2012    End User Items 
2   Mobile  12/12/2011    End User Items 
3   Server  12/12/2013    Server

所以我会尝试这样的事情:

select * from systems where type = "End User Items" group by ID

但结果仍然不会显示最新日期。任何帮助将不胜感激!

4

3 回答 3

0

您可以使用子查询来获取 ID 和 MAX 日期,然后使用 ID 和 MAX 日期重新加入您的系统表。

SELECT s2.Name, s.EventDate
FROM system s2 
INNER JOIN (SELECT ID, MAX(EventDate) EventDate
            FROM systems
            WHERE type = 'End User Items'
            GROUP BY ID) AS s on s2.ID = s.ID AND s2.EventDate = s.EventDate
于 2013-04-02T22:13:29.680 回答
0

将您想要在不汇总的情况下显示的列定义为您的 GROUP BY 字段。选择这些字段和计算的汇总函数列(例如 max()、sum()、count())。

SELECT ID, Name, MAX(EventDate) as LastDate
  FROM  systems
  WHERE type = 'End User Items'
  GROUP BY ID, Name

您可能想查看 ID 和名称。在这里类型是多余的,因为你只需要一种类型。您想获取组中的 max() 日期。返回的所有字段必须是汇总函数或 GROUP BY 列。

于 2013-04-02T23:40:57.017 回答
0

您是否尝试过MAX如下获取日期?

SELECT  Name,
    MAX(EventDate),
    Type
  FROM  systems
  WHERE type = 'End User Items'
  GROUP BY Name, Type
于 2013-04-02T22:08:54.750 回答