请帮我解决工作中遇到的问题。我正在使用SQL Server,并且我知道使用游标可以实现此目的,但是我很确定有一种方法可以使用SQL中的简单查询来实现,但是我的大脑不希望打开。让我用一个例子解释我的问题。

我有一张这样的桌子:

postedby    |   date        |   comment |
1           |   01.01.2012  |   sth sth |
2           |   01.01.2012  |   sth sth |
3           |   01.01.2012  |   sth sth |
2           |   01.01.2012  |   sth sth |
3           |   02.01.2012  |   sth sth |
2           |   03.01.2012  |   sth sth |
2           |   05.01.2012  |   sth sth |


我要完成的是获取所有帖子,但每个用户一个帖子(postedby列),日期必须是最新的,并且当然要显示评论。

我试着做:

Select distinct postedby, date, comment


但没有用,因为据我了解每列都有不同的作品,所以如果在2行中发布者相同但注释不同,则将其视为不同作品

我试着做:

Select postedby,date,comment group by postedby(不要理会from子句)
给我错误或汇总,所以我尝试了
select postedby,min(date) group by postedby-当然可以,但是我听不清评论。

我应该以某种方式使用汇总查询吗?还是我想念什么?

最佳答案

看起来今天是RowNumber函数日!
如果您需要的只是每个帖子的最新日期和评论:

SELECT postedBy, date, comment
FROM (SELECT ROW_NUMBER() OVER (PARTITION BY postedby, ORDER BY date DESC) AS RowNumber,
             postedBy, date, comment
      FROM MyTable) t
WHERE RowNumber = 1

10-06 13:29