test1テーブル Col1 Col2 ---- ---- 100 1 100 1 102 1 102 0 102 1 104 0 104 0 Col1ごとで、 Col2が全て1なら、OK そうでないなら、NG を出力する 出力結果 Col1 Col2 ---- ---- 100 OK 102 NG 104 NG
create table test1 as select 100 as Col1,'1' as Col2 from dual union all select 100,'1' from dual union all select 102,'1' from dual union all select 102,'0' from dual union all select 102,'1' from dual union all select 104,'0' from dual union all select 104,'0' from dual;
select Col1, case min(decode(Col2,'1',1,0)) when 0 then 'NG' else 'OK' end as Col2 from test1 group by Col1 order by Col1;
min関数とdecode関数を組み合わせて、存在有無のブールを求めて、 単純case式を使ってます。 windowsのエクスプローラで 拡張子の昇順にソートして先頭がjpg 拡張子の降順にソートして先頭がjpg ならjpgしか存在しない という考え方でもあります。 9-18 存在有無のブール値を求める 9-48 集合で考える