Select 来自 table 使用分组依据的最后记录

Select last records from table using group by

我需要 select 使用按用户 ID

分组的 table 的最后记录

我需要select StartDate,EndDate 来自按用户 ID 分组的最后记录

我正在使用下面的代码

select StartDate,EndDate from  usersworktime   group by userid,StartDate,EndDate

问题是我得到的是所有行,而不是我的 table

的最后两行

假设 开始日期和结束日期始终是最高值,那么您需要从 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
);