1.相当于if__ else(if __else if __else用法)
decode(value,if1,then1,if2,then2,if3,then3,...,else)
select decode(1,1,100,800)from dual;--100(if_else_),如果1等于1,则100,如果1不等于1,则800
select decode(1,0,100,800) from dual;--800(if_else_)
select decode(1,1,100,0,200,800) from dual;--100(if_else if_else_)
select decode(0,1,100,0,200,800) from dual;--200(if_else if_else_)如果0等于1则100,如果0等于0则200,否则800
select decode(3,1,100,0,200,800) from dual;--800(if_else if_else_)
select decode(3,1,100,0,200) from dual;--''(if_else if_else_)
2.对表进行行转列
如累加各学科的成绩
select
sum(decode(xueke,'数学',num,0)) shuxue,
sum(decode(xueke,'语文',num,0)) yuwen,
sum(decode(xueke,'英语',num,0)) yingyu
from gride;
其他用法还在学习中...