这个问题已经在这里有一个答案:
我需要选择使用组通过用户名从我的表最后一个记录
我需要从用户ID分组最后一个记录选择开始日期,结束日期
我使用下面的代码
select StartDate,EndDate from usersworktime group by userid,StartDate,EndDate
问题是,我得到而不是只有最后两个我的表中的所有行
假设开始和结束日期将永远是最高值,则需要放弃一些列从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;
我想我找到了解决办法
SELECT usersworktimeid, userid,StartDate, EndDate
FROM usersworktime
WHERE usersworktimeid IN (
SELECT MAX(usersworktimeid)
FROM usersworktime
GROUP BY UserID
);