2010-03-25 5 views
3

날짜 선택이있는 테이블이 있습니다 (MS SQL 2005). WHERE 문을 적용하여 그룹을 반환하고 한 날짜부터 가장 오래된 날짜와 다른 날짜의 최신 날짜를 반환 할 수 있기를 원합니다. 다음은 테이블 예입니다.SQL을 사용하는 테이블에서 지정된 레코드의 가장 빠른 날짜와 가장 최근 날짜 찾기

ID StartDate EndDate Person 
1 01/03/2010 03/03/2010 Paul 
2 12/05/2010 22/05/2010 Steve 
3 04/03/2101 08/03/2010 Paul 

그래서 Person = 'Paul'인 모든 레코드를 반환하고 싶습니다. 그러나 (가장 빠른) StartDate = 2010 년 1 월 3 일 (레코드 ID 1) 및 (최신) EndDate = 2010 년 8 월 3 일 (레코드 ID 3에서)과 같은 것을 반환하십시오.

덕분에 사전에

+0

당신 : 당신이 당신의 결과에있는 모든 사람을 좋아하고 where 절을두면 그래서, 당신은 잘못된 데이터를 얻을 수 없겠죠 시작일이 종료일 이후 일 수 없다는 수표를 작성하는 것이 좋습니다. (3 행) – Whakkee

+0

오타와는 데이터 입력시 유효성 검사가 수행되므로 걱정하지 않아도됩니다. 감사. – tonyyeb

답변

8

당신은 예를 들어, minmax 집계 함수가 필요 매우 간단한 경우 :

select min(StartDate), max(EndDate) 
from data 
where Person = 'Paul' 

당신은 모든 일반적인 능력을 가지고 있으므로 하위 쿼리에서 선택할 수 있습니다.

+0

리차드, 지금 당연히 감사합니다! – tonyyeb

2

group by도 사용하는 것이 좋습니다.

select person, min(StartDate), max(EndDate) 
from data 
group by person 

또는

select person, min(StartDate), max(EndDate) 
from data 
where person ='Paul' 
group by person 

또는

select person, min(StartDate), max(EndDate) 
from data 
group by person 
having person ='Paul' 
관련 문제