请帮我解决工作中遇到的问题。我正在使用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