2012-03-06 6 views
0

FA_Event = "Watch List Qualified"이고 FA_ID = MAX (FA_ID) 인 기호를 선택하고 싶습니다. 즉,이 데이터베이스에서 기호 "A"의 MAX (FA_ID) = 1이고 기호 "B"의 MAX (FA_ID) = 3입니다. 이 최대 값 (1,3) 이벤트 = "Watch List Qualified"여부를 확인해야합니다. FA_ID = 3에 "Watch List Qualified"가 없으므로 응답은 "A"만됩니다.데이터베이스에서 선택

FA_ID FA_SYmbol FA_Event    FA_DATE  FA_COmment 
1  A   NULL     NULL   NULL 
1  A   Watch List Qualified 05-Mar-12 NULL 
1  B   NULL     NULL   NULL 
1  B   Watch List Qualified 05-Mar-12 NULL 
2  B   NULL     NULL   NULL 
2  B   e7      NULL   NULL 
2  B   e9      NULL   NULL 
2  B   Watch List Qualified 05-Mar-12 NULL 
3  B   NULL     NULL   NULL 
3  B   e2      NULL   NULL 
그것은 다음과 같습니다

답변

1

당신이 찾고있는 무엇을 : 당신의 RDBMS를 가정

http://sqlfiddle.com/#!3/5ff70/9

select * from 
table1 
    inner join (
     select fa_symbol, max(fa_id) as maxid 
     from table1 
     group by fa_symbol 
    ) maxes on 
    table1.fa_symbol = maxes.fa_symbol AND 
    table1.fa_id = maxes.maxid 
where 
fa_event = 'Watch List Qualified' 
+1

BTW - 저는 sqlfiddle.com의 개발자입니다. –

+0

sqlfiddle은 위대한 일입니다 !! : D – mcha

+0

** 좋은 ** 사이트 - SO를위한 이상적인 보완책. –

0

가 MAX의 기능을 가진 OVER 절을 지원, 시도 :

select * from 
(select m.*, max(FA_ID) over (partition by FA_SYmbol) max_ID 
from myTable m) sq 
where FA_ID = max_ID and 
     FA_Event = 'Watch List Qualified' 
관련 문제