トップページに戻る    次のSQLパズルへ    前のSQLパズルへ

2-1-15 連続した等しいかのチェック

SQLパズル

SeqNullChkテーブル
ColA  ColB  ColC  ColD  ColE  ColF
----  ----  ----  ----  ----  ----
   1     1     1     1     1     1
   1     1     1     1     1     2
   1     1     3     1     1     2
   2     3     1     1     1     2

ColA=ColB=ColC=ColD=ColE=ColF
かチェックして、チェック結果(OKかNG)
を出力する。

出力結果
ColA  ColB  ColC  ColD  ColE  ColF  チェック結果
----  ----  ----  ----  ----  ----  ------------
   1     1     1     1     1     1  OK
   1     1     1     1     1     2  NG
   1     1     3     1     1     2  NG
   2     3     1     1     1     2  NG


データ作成スクリプト

create table SeqNullChk(ColA,ColB,ColC,ColD,ColE,ColF) as
select 1,1,1,1,1,1 from dual union
select 1,1,1,1,1,2 from dual union
select 1,1,3,1,1,2 from dual union
select 2,3,1,1,1,2 from dual;


SQL

col チェック結果 for a12

--■■■all述語を使用しない方法■■■
select ColA,ColB,ColC,ColD,ColE,ColF,
case when ColA=ColB and ColA=ColC and ColA=ColD and ColA=ColE and ColA=ColF
     then 'OK' else 'NG' end as チェック結果
from SeqNullChk;

--■■■all述語を使用する方法■■■
select ColA,ColB,ColC,ColD,ColE,ColF,
case when ColA = all(ColB,ColC,ColD,ColE,ColF) then 'OK' else 'NG' end as チェック結果
from SeqNullChk;


解説

all述語で、連続した等しいかのチェックができます。