2012-07-13 6 views
0

먼저 부서에 가입 한 직원의 ID를 선택하는 쿼리를 작성하여 가입 날짜에 deptId 및 Min 집계 함수에 그룹화를 적용합니다.Sql 쿼리 그룹화 및 전체 행 선택

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입니다. 가능한 해결책이 있습니까? 나는이 쿼리를 시도하고 나를

select EmpId, joinDate , deptId from 
(select row_number() over(partition by deptId order by joinDate) as rnk,* 
from employe)E 
where E.rnk=1 
+0

EmpID가 GUID가 아님 ..... 해당 GUID ....가 확실합니까? – Asif

+0

@ SoftwareEngineer - EMP_Id는'Guid' 값을 가지며 실제로는'String' 타입이거나'GUID' 타입입니까? –

+0

위의 예에서는 GUID가 아니지만 실제 Db에서는 GUID입니다. –

답변

1

을 사용하고 어쩌면 조금 간단한 해결책 :

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은 간단하다고 생각합니다.

0

을 알려 주시기 바랍니다 MS SQL Server 2008의