Sql Query Grouping并选择Complete Row

时间:2012-07-13 06:18:03

标签: sql sql-server sql-server-2008 tsql

我必须编写一个查询来选择首先加入部门的员工的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。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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,我认为它应该有效。