2010-04-15 4 views
0

을 발견하지 않습니다 나는 다음과 같은 조치의 목록했습니다 내 문제입니다 :나는 SQL 요청 여기

src1 dst2 24th december 2009 
src1 dst3 22th december 2009 
src1 dst2 18th december 2009 

것은 내가 SQL 요청과 단지 최신의 조치를하고 싶습니다 ->이 첫 선 내 경우에는 쌍 (src와 dst)이 같지 않기 때문에.

나는 DISTINCT를 사용하려고하지만, 처음 열이 2 개 뿐이며 모든 열을 갖게됩니다. GROUP BY도 시도했지만 성공하지 못했습니다.

누구든지 나를 도와 줄 수 있습니까?

들으

Narglix

답변

0
select src, dst, max(date) as Date 
from MyTable 
group by src, dst 

업데이트 :

select * 
from MyTable t 
inner join (
    select src, dst, max(date) as Date 
    from MyTable 
    group by src, dst 
) tm on t.src = tm.src and t.dst = tm.dst and t.Date = tm.Date 
+0

, 나는 다른 사람의 열이하지만 난에 최대를 사용할 수 없습니다 그들의 경우? – user301089

+0

처리 방법은 내 업데이트를 참조하십시오. – RedFilter

+0

Thx 정확히 내가 원하는 것입니다. 너는 나의 구세주 야. – user301089

0

또는 8.4 당신이 할 수에서

select distinct on (src,dst) 
     src,dst,date 
    from mytable 
order by src,dst,date desc; 
0

에 뚜렷한 사용할 수 있습니다 또한 수행

select src, dst, date 
from (select row_number() over(partition by src, dst order by date desc) as row, 
      src, dst, date 
     from t) x 
where x.row = 1 

이 하나의 테이블 스캔을 사용하고, 또한 최근 5 개 조치 등을 취할 수있는 것으로 일반화된다

내 목록을 단순화