oracle select加判断,oracle select decode判断 ,sign使用例子

比较大小函数SIGN

sign(x)或者Sign(x)叫做符号函数,其功能是取某个数的符号(正或负):当x>0,sign(x)=1;当x=0,sign(x)=0;当x<0, sign(x)=-1;

x可以是函数或计算表达式

有学生成绩表student,现在要用decode函数实现以下几个功能:成绩>85,显示优秀;>70显示良好;>60及格;否则是不及格。

假设student的编号为id,成绩为score,那么:

select id, decode(sign(score-85),1,'优秀',0,'优秀',-1,

decode(sign(score-70),1,'良好',0,'良好',-1,

decode(sign(score-60),1,'及格',0,'及格',-1,'不及格')))

from student;

decode 和 case when 使用原理都是一样的

SELECT

decode( sign(AllPerson.ID_-smallpct.HR_EFF_PPLAN_CYCLE_ID_),0,

(AllPerson.AllPersonCount-smallpct.smallpctCount),

AllPerson.AllPersonCount) AS noToReportNum

from

( SELECT COUNT( pcpt1.HR_EFF_PPLAN_CYCLE_ID_) smallpctCount, pcpt1.HR_EFF_PPLAN_CYCLE_ID_  FROM

HR_EFF_PPLAN_CYCLE cycle1,hr_eff_plan ep1 , HR_EFF_PFMCE_PLAN pp1,

HR_EFF_PFMCE_PLANEECPT pcpt1

WHERE

ep1.STATUS_='0' AND cycle1.STATUS_='0' AND pp1.STATUS_='0' AND  pcpt1.STATUS_='0'

AND pcpt1.HR_EFF_PFMCE_PLAN_ID_=pp1.ID_

AND pcpt1.HR_EFF_PPLAN_CYCLE_ID_=cycle1.ID_

and to_char(sysdate, 'yy-MM')>=to_char(cycle1.OBJ_REPORT_STIME_,'yy-MM')

AND cycle1.HR_EFF_PFMCE_PLAN_ID_=pp1.ID_

AND pp1.HR_EFF_PLAN_ID_=ep1.ID_  GROUP BY pcpt1.HR_EFF_PPLAN_CYCLE_ID_ ) smallpct

,

( SELECT COUNT(news1.ID_) AllPersonCount ,cycle1.ID_  FROM

HR_EFF_PPLAN_CYCLE cycle1,hr_eff_plan ep1 , hr_eff_news news1,HR_EFF_PFMCE_PLAN pp1

WHERE

ep1.STATUS_='0' AND cycle1.STATUS_='0' AND pp1.STATUS_='0'

and to_char(sysdate, 'yy-MM')>=to_char(cycle1.OBJ_REPORT_STIME_,'yy-MM')

AND cycle1.HR_EFF_PFMCE_PLAN_ID_=pp1.ID_

AND pp1.HR_EFF_PLAN_ID_=ep1.ID_

AND news1.HR_EFF_PLAN_ID_=ep1.ID_ GROUP BY cycle1.ID_ ) AllPerson

SELECT decode ( (COUNT(1)),0,2,(COUNT(1)) )  from      ( SELECT COUNT( pcpt1.HR_EFF_PPLAN_CYCLE_ID_) smallpctCount, pcpt1.HR_EFF_PPLAN_CYCLE_ID_  FROM

HR_EFF_PPLAN_CYCLE cycle1,hr_eff_plan ep1 , HR_EFF_PFMCE_PLAN pp1,

HR_EFF_PFMCE_PLANEECPT pcpt1

WHERE

ep1.STATUS_='0' AND cycle1.STATUS_='0' AND pp1.STATUS_='0' AND  pcpt1.STATUS_='0'

AND pcpt1.HR_EFF_PFMCE_PLAN_ID_=pp1.ID_

AND pcpt1.HR_EFF_PPLAN_CYCLE_ID_=cycle1.ID_

and to_char(sysdate, 'yy-MM')>=to_char(cycle1.OBJ_REPORT_STIME_,'yy-MM')

AND cycle1.HR_EFF_PFMCE_PLAN_ID_=pp1.ID_

AND pp1.HR_EFF_PLAN_ID_=ep1.ID_  GROUP BY pcpt1.HR_EFF_PPLAN_CYCLE_ID_ ) hasReport

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值