ColA ColB ColC ---- ---- ---- 0 0 あ 0 1 い 1 0 う 1 5 え 2 0 お 2 1 か 3 0 き 4 0 く 4 2 け 4 4 こ ColBが1のデータを出力する。 ただし、ColAの値が同じでColBが1のデータがない場合は、 ColBが0のデータを出力する。 出力結果 ColA ColB ColC ---- ---- ---- 0 1 い 1 0 う 2 1 か 3 0 き 4 0 く
create table test( ColA number(1), ColB number(1), ColC char(2)); insert into test values(0,0,'あ'); insert into test values(0,1,'い'); insert into test values(1,0,'う'); insert into test values(1,5,'え'); insert into test values(2,0,'お'); insert into test values(2,1,'か'); insert into test values(3,0,'き'); insert into test values(4,0,'く'); insert into test values(4,2,'け'); insert into test values(4,4,'こ'); commit;
select ColA,ColB,ColC from (select ColA,ColB,ColC, max(ColB) over(partition by ColA) as MaxColB from test where ColB in(0,1)) where ColB=MaxColB;
ColAごとに、ColBが0か1のデータを取得して、 最大のColBであることを条件としてます。