Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server:изберете последния резултат от групата по

Искате да използвате прозоречни функции за това, вместо group by :

select FromUser, ToUser, Message, [Date], UserId, UserFullName, UserName, UserPhoto
from (SELECT CM.FromUser, CM.ToUser, CM.Message, CM.Date, U.UserId,
             U.UserFullName, U.UserName, U.UserPhoto,
             row_number() over (partition by CM.FromUser, CM.ToUser order by [Date] desc) as seqnum
      FROM ConversationMessages CM INNER JOIN
           Users U
           ON U.UserName = CM.FromUser
      WHERE  CM.ToUser = @user
     ) s
WHERE seqnum = 1
ORDER BY CM.Date DESC ;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Липсващ индекс на SQL Server

  2. Отпечатване на текущата стойност и предишната стойност между диапазона от дати

  3. Как мога да подобря този оператор SELECT за пощенски адрес на SQL Server?

  4. Защо преобразуването от DATETIME в DATETIME2 изглежда променя стойността?

  5. Използваната версия на SQL Server не поддържа тип данни datetime2?