decode函数很简单,相当于if....else....,只不过语法很简洁
decode()
- decode(条件,值1,值2,值3……)
当decode条件,值1满足时,就输出值1,值2满足时,就输出值2,。。。。以此类推,
- decode(字段值,值1,值2,值3……)
当字段值等于值1 ,则输出值2,否则输出值3
select T.LOT_ID,T.LOT_RRN,T.STARTED_TIMESTAMP, ----开始加工时间T.END_TIMESTAMP,T.LOT_TYPE,T.NEXT_STEP_ID_VERSION2,T.EQPT_RRN,T.CARRIER_LIST_RRN,DECODE( T.LOT_STATUS,'FINISH','结束加工','RUNNING','加工中','WAITING','等待加工',T.LOT_STATUS) LOT_STATUS_RDfrom lot TWHERE T.STARTED_TIMESTAMP>=TO_DATE('2022-09-01','YYYY-MM-DD')
输出结果为
语句意思为,当字段值显示 finish 输出 结束加工;waiting输出等待加工;running输出加工中,其余的还是原样输出
decode函数和其他函数结合
decode(sign(值1-值2),-1,变量1,变量2)
sign()函数:根据数值是0,正数,负数,分别返回0,1,-1
例如:
值1=10,值2=20
sign(值1-值2),返回-1,decode()返回变量1 ,达到取出最小值的目的
实例:查询某班男生女生数量
select count(*) from 表 where 性别=男;
select count(*) from 表 where 性别=女;用union合并一下结果
也可以使用
select decode(性别,男,1,0),decode(性别,女,1,0) from 表
来源地址:https://blog.csdn.net/w11abandon/article/details/126888807