with a as (select '1' as id, '02' as trantype, '1000.00' as raiseamt, '1' as transtate from dual union
select '2' as id, '02' as tranType, '1000.00' as raiseAmt, '2' as tranState from dual union
select '3' as id, '02' as tranType, '1000.00' as raiseAmt, '1' as tranState from dual union
select '4' as id, '02' as tranType, '1000.00' as raiseAmt, '3' as tranState from dual union
select '5' as id, '02' as trantype, '1000.00' as raiseamt, '1' as transtate from dual
) select id, trantype, raiseamt, transtate
from a
order by decode(transtate, '1', '1', '3', '0', '2', '2');