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;