从数据库SQL查询中选择

时间:2012-03-06 06:11:28

标签: sql

我想选择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中没有“监视列表合格”,因此答案将仅为“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

2 个答案:

答案 0 :(得分:1)

看起来这就是你要找的东西:

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 :(得分:0)

假设您的RDBMS支持带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'