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

Pilih 1 baris teratas dari setiap grup

Jika Anda menggunakan SQL-Server (minimal 2005), Anda dapat menggunakan CTE dengan ROW_NUMBER fungsi. Anda dapat menggunakan CAST untuk versi untuk mendapatkan urutan yang benar:

WITH cte 
     AS (SELECT id, 
                userid, 
                version, 
                datetime, 
                Row_number() 
                  OVER ( 
                    partition BY userid 
                    ORDER BY Cast(version AS INT) DESC) rn 
         FROM   [dbo].[table]) 
SELECT id, 
       userid, 
       version, 
       datetime 
FROM   cte 
WHERE  rn = 1 
ORDER BY userid

Demo

ROW_NUMBER mengembalikan selalu satu catatan meskipun ada beberapa pengguna dengan versi (atas) yang sama. Jika Anda ingin mengembalikan semua "catatan pengguna versi teratas", Anda harus mengganti ROW_NUMBER dengan DENSE_RANK .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. temukan jumlah koneksi terbuka di database

  2. Sisipkan pernyataan dengan sub kueri

  3. Pergi dengan driver SQL Server tidak dapat terhubung dengan sukses, login gagal

  4. Cara Mengekstrak atau Mengonversi Data Waktu dari String di SQL Server

  5. Bagaimana cara mendapatkan hari terakhir minggu lalu di sql?