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

Изберете най-новата група записи по потребителско име в SQL Server 2008

Имате няколко опции тук, но като използвате добавяне на ROW_NUMBER групирани по user и сортирани (в низходящ ред) по вашия timestamp ви позволява лесно да изберете най-новите записи.

Използване на ROW_NUMBER

SELECT *
FROM   (
         SELECT ID, voting_ID, username, timestamp, XMLBallot
                , rn = ROW_NUMBER() OVER (PARTITION BY voting_ID, username ORDER BY timestamp DESC)
         FROM   Ballots
       ) bt 
WHERE  rn = 1

Като алтернатива можете да изберете максималното времево клеймо за потребител и да се присъедините към него.

Използване на MAX

SELECT bt.ID, bt.voting_ID, bt.username, bt.timestamp, bt.XMLBallot
FROM   Ballots bt
       INNER JOIN (
          SELECT username, voting_ID, timestamp = MAX(timestamp)
          FROM   Ballots
          GROUP BY
                 username, voting_ID
        ) btm ON btm.username = bt.Username
                 AND btm.voting_ID = bt.voting_ID
                 AND btm.timestamp = bt.timestamp


  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 сборен отчет по години, търсейки елегантно решение

  2. Типът данни на SQL Server BIT се отчита по различен начин за заявка за изглед и таблица

  3. Как работи SET ROWCOUNT в SQL Server

  4. Получаване и инсталиране на Microsoft SQL Server Management Studio

  5. Импортирайте .txt файл в SQL Server 2008