Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Pilih grup rekaman terbaru berdasarkan nama pengguna di SQL Server 2008

Anda memiliki beberapa opsi di sini tetapi menggunakan menambahkan ROW_NUMBER dikelompokkan berdasarkan user dan diurutkan (turun) pada timestamp memungkinkan Anda untuk dengan mudah memilih catatan terbaru.

Menggunakan 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

Atau, Anda dapat memilih stempel waktu maksimum per pengguna dan bergabung dengan itu.

Menggunakan 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. Cara memperbarui baris dengan tanggal acak

  2. Apa cara yang tepat untuk mengisi DropDownList dari database?

  3. Bagaimana Menyisipkan Catatan berdasarkan Sisipan Sebelumnya?

  4. Di mana Penganalisis Kueri di SQL Server Management Studio 2008 R2?

  5. Pernyataan Ganti Pembaruan SQL