0

我必须编写一个查询来选择首先加入该部门的员工的 ID,为此我在加入日期应用对 deptId 和 Min 聚合函数的分组。

EmpId joinDate  deptId
1      2/5/2012   2
2      5/6/2012   1
3      2/5/2012   2
4      5/58/2012  2

我的结果应该是:

EmpId joinDate  deptId
1      2/5/2012   2
2      5/6/2012   1

我无法获取 EmpId,我的 EmpId 是 Guid 类型。有没有可能的解决方案。我正在使用 MS SQL SERVER 2008。

4

2 回答 2

1

请尝试此查询并告诉我

select EmpId, joinDate , deptId from
(select row_number() over(partition by deptId order by joinDate) as rnk,*
from employe)E
where E.rnk=1
于 2012-07-13T07:05:07.260 回答
0

也许有点简单的解决方案:

SELECT * FROM employees a WHERE joinDate IN
(SELECT MAX(b.joinDate) FROM employees b WHERE b.deptId = a.deptId)

假设您的表的名称是employees并且您希望从第一个加入的部门中获取所有员工(可以有多个!)。免责声明:没有在 MS SQL Server 上测试,而是在 PostgreSQL 上测试,但是它是一个简单的 SQL,我认为它应该可以工作。

于 2012-07-13T07:55:22.283 回答