从数据库中选择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中没有“Watch List Qualified”,所以答案只会是“A”。从数据库中选择SQL查询
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
答
它看起来这是你在找什么:
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'
答
假设你的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'
顺便说一句 - 我是后面的开发者sqlfiddle.com – 2012-03-06 06:29:42
sqlfiddle是一个了不起的工作! :D – mcha 2012-03-06 09:09:57
**尼斯**网站 - SO的理想补充。 – 2012-03-06 09:22:48