Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Chọn bản ghi cuối cùng từ bảng bằng cách sử dụng nhóm theo

Giả định rằng ngày bắt đầu và ngày kết thúc sẽ luôn là giá trị cao nhất, khi đó bạn cần bỏ một số cột khỏi GROUP BY (có tất cả các cột trong GROUP BY giống như sử dụng DISTINCT ) và sử dụng một hàm tổng hợp trên cột khác:

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

Ngược lại, nếu không phải như vậy, bạn có thể sử dụng CTE và 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. Vi phạm ràng buộc UNIQUE KEY trên INSERT WHERE COUNT (*) =0 trên SQL Server 2005

  2. Chọn các hàng trên cùng cho đến khi giá trị trong cột cụ thể xuất hiện hai lần

  3. SQL Server Profiler - Làm cách nào để lọc theo dõi để chỉ hiển thị các sự kiện từ một cơ sở dữ liệu?

  4. Giao thức cấu hình mạng máy chủ Sql không khả dụng

  5. Có cách nào để hiển thị kết quả PRINT với trình điều khiển JDBC của máy chủ SQL không?