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

Pilih catatan terakhir dari tabel menggunakan grup menurut

Dengan asumsi bahwa tanggal mulai dan akhir akan selalu menjadi nilai tertinggi maka Anda perlu menghapus beberapa kolom dari GROUP BY (memiliki semua kolom di GROUP BY agak seperti menggunakan DISTINCT ) dan gunakan fungsi agregat di kolom lain:

SELECT UserId,
       MAX(StartDate) AS StartDate,
       MAX(EndDate) AS EndDate
FROM usersworktime
GROUP BY UserId;

Jika tidak, jika tidak, Anda dapat menggunakan CTE dan ROW_NUMBER :

WITH CTE AS(
    SELECT UserID,
           StartDate,
           EndDate,
           ROW_NUMBER() OVER (PARTITION BY UserID ORDER BY UsersWordTimeID DESC) AS RN
    FROM usersworktime)
SELECT UserID,
       StartDate,
       EndDate
FROM CTE
WHERE RN = 1;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kueri SQL yang rumit--menemukan item yang cocok dengan beberapa kunci asing yang berbeda

  2. Mengubah angka menjadi kata dalam SQL

  3. sql:ANTARA v1 DAN v2

  4. Bagaimana cara saya terhubung ke database MSSQL menggunakan modul DBI Perl di Windows?

  5. Cara Memasukkan String ke String lain di SQL Server menggunakan STUFF()