test_t NO Col1 Col2 Col3 Col4 Col5 -- ---- ---- ---- ---- ---- 1 null A null null B 2 null C D E F 3 G H I J K 4 null L null null null 5 null null null null null 行ごとの、 Col1,Col2,Col3,Col4,Col5のnullでない列の数を求め、 その値の降順で出力する。 出力結果 NO CNT -- --- 3 5 2 4 1 2 4 1 5 0
create table test_t( NO number(1), Col1 char(1), Col2 char(1), Col3 char(1), Col4 char(1), Col5 char(1)); insert into test_t values(1,null,'A' ,null,null,'B' ); insert into test_t values(2,null,'C' ,'D' ,'E' ,'F' ); insert into test_t values(3,'G' ,'H' ,'I' ,'J' ,'K' ); insert into test_t values(4,null,'L' ,null,null,null); insert into test_t values(5,null,null,null,null,null); commit;
select NO, nvl2(Col1,1,0)+ nvl2(Col2,1,0)+ nvl2(Col3,1,0)+ nvl2(Col4,1,0)+ nvl2(Col5,1,0) as cnt from test_t order by cnt desc;
列別名にdescを指定して、降順に出力してます。