2012-03-06 11 views
0

FA_Event = "Watch List Qualified"、FA_ID = MAX(FA_ID)のシンボルを選択します。 つまり、このデータベースでは、シンボル "A"のMAX(FA_ID)= 1、シンボル "B"のMAX(FA_ID)= 3です。私はこの最大値(1,3)のイベント= "ウォッチリストの適格"かどうかをチェックする必要があります。 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' 
関連する問題