Приемаме че началната и крайната дата винаги ще бъдат най-високите стойности, тогава трябва да премахнете някои от колоните от GROUP BY
(с всички колони в GROUP BY
е нещо като използването на DISTINCT
) и използвайте агрегатна функция в другата колона:
SELECT UserId,
MAX(StartDate) AS StartDate,
MAX(EndDate) AS EndDate
FROM usersworktime
GROUP BY UserId;
В противен случай, ако това не е така, можете да използвате CTE и 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;