トップページに戻る
次の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述語で、連続した等しいかのチェックができます。