2013-05-20 26 views
0

我有一个表列AppId,Comment,TimeStamp。表格可以有多个相同的条目AppId。现在我想要做的是得到Top 1Comment每个AppId订购TimeStamp说明。按功能分组与SQL 1中的顶部1

我已经试过类似

SELECT TOP 1 Comment, AppId FROM comments GROUP BY AppId

但这并不似乎工作,因为我得到一个错误

Column 'comments.Comment' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

可有人请指出我如何得到正确的方向这工作

谢谢

回答

4

根据您的数据库引擎,您可以使用ROW_NUMBER()

SELECT Comment, AppId 
FROM (
    SELECT Comment, AppId, ROW_NUMBER() OVER (PARTITION BY AppId ORDER BY TimeStamp DESC) AS GroupRowNumber 
    FROM comments 
) AS sub 
WHERE GroupRowNumber = 1 

如果你没有,你需要更多的东西的hackish:

SELECT Comment, AppId 
FROM comments 
WHERE TimeStamp = (SELECT MAX(TimeStamp) FROM comments AS comments_inner WHERE comments_inner.AppId = comments.AppId)