select nvl2(a,0,1)+nvl2(b,0,1)+nvl2(c,0,1) from tb;
with temp as( select 1 a,2 b,null c from dual union all select 1 a,1 b,1 c from dual union all select 1 a,null b,null c from dual ) select sum(decode(a,null,1,0)),sum(decode(b,null,1,0)),sum(decode(c,null,1,0)) from temp
select 1 a,2 b,null c from dual
union all
select 1 a,1 b,1 c from dual
union all
select 1 a,null b,null c from dual
)
select sum(decode(a,null,1,0)),sum(decode(b,null,1,0)),sum(decode(c,null,1,0)) from temp