select decode(sign(col),1,col) positive_value
, decode(sign(col),-1,col) negative_value
, decode(sign(col),0,col) zero_value
from tbl_name
eu não sei se isso vai funcionar ou não, mas uma vez tentar ..
select decode(sign(col),1,col) positive_value
, decode(sign(col),-1,col) negative_value
, decode(sign(col),0,col) zero_value
from tbl_name