Sql Server - топ-1 пост на каждого пользователя по заказу созданного - PullRequest
0 голосов
/ 18 сентября 2009

У меня есть таблица Posts, которая имеет memberID и createDate.

Мне нужно вернуть самое последнее сообщение для каждого участника, и сообщения должны быть в порядке с самым последним наверху.

Я не уверен, как это сделать с Sql Server, кто-нибудь может помочь?

Ответы [ 3 ]

3 голосов
/ 18 сентября 2009
WITH PostsRanked AS (
  SELECT
    memberID, postTitle, createdDate,
    RANK() OVER (
      PARTITION BY memberID
      ORDER BY createdDate DESC
    ) AS rk
  FROM Posts
)
  SELECT
    memberID, postTitle, createdDate
  FROM PostsRanked
  WHERE rk = 1
  ORDER BY createdDate DESC
0 голосов
/ 18 сентября 2009

Вот рабочий запрос

select p.* 
from post p join
(
    select memberId, max(createdDate) as maxd 
    from post 
    group by memberId

) as p2 on p.memberid = p2.memberid and p.createdDate=p2.maxd
order by p.createdDate desc
0 голосов
/ 18 сентября 2009
select p.* 
 from post p 
 join (select memberId, 
              max(createdDate) as maxd 
        from post 
    group by memberId) as p2 on p.member_id=p2.member_id 
                            and p.createdDate=p2.maxd
 order by p.createdDate desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...