使用分组依据

时间:2019-02-05 20:40:19

标签: sql sql-server sql-server-2008-r2

我需要使用UserID按组从表中选择最后一条记录

Image

我需要从按用户ID分组的最后一个记录中选择StartDate,EndDate

我正在使用下面的代码

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

问题是我要获取所有行而不是表的最后两行

2 个答案:

答案 0 :(得分:2)

假设,开始日期和结束日期将始终是最高值,那么您需要从GROUP BY中删除某些列(将{{1}中的所有列}有点像使用GROUP BY),并在另一列上使用了聚合函数:

DISTINCT

否则,如果不是这种情况,则可以使用CTE和SELECT UserId, MAX(StartDate) AS StartDate, MAX(EndDate) AS EndDate FROM usersworktime GROUP BY UserId;

ROW_NUMBER

答案 1 :(得分:0)

我想我找到了解决方法

SELECT usersworktimeid, userid,StartDate, EndDate
  FROM usersworktime
WHERE usersworktimeid IN (
SELECT MAX(usersworktimeid)
FROM usersworktime
GROUP BY UserID
);