IDTable ID Val Seq -- --- --- 1 6 1 1 -70 2 1 -40 3 1 6 4 2 12 1 2 -1 2 5 8 1 6 3 2 7 -8 1 7 99 2 8 7 1 8 -7 2 IDごとで、Seqが最大の行のValが負なら出力する。 出力結果 ID -- 2 8
create table IDTable(ID,Val,Seq) as select 1, 6,1 from dual union select 1,-70,2 from dual union select 1,-40,3 from dual union select 1, 6,4 from dual union select 2, 12,1 from dual union select 2, -1,2 from dual union select 5, 8,1 from dual union select 6, 3,2 from dual union select 7, -8,1 from dual union select 7, 99,2 from dual union select 8, 7,1 from dual union select 8, -7,2 from dual;
select ID from IDTable group by ID having max(Val) Keep (Dense_Rank Last order by Seq) < 0;
Keep句のorder by句で、 ソートキーによって一意になるようにすると 分かりやすいと思いますね。