coalesce()
coalesce(字段1,字段2,...,0)
--先判断第一个字段的值是否为null,如果不是则取字段1的值,如果是则往后判断,直至取到不为null的值,常用在多表关联
示例:
select t.device_number hm,
coalesce(t1.fee, t2.fee, t3.fee, 0) fee
from emp t.......--后省略
row_number() over(partition by order by)
row_number() over(partition by 字段1 order by 字段2, 字段3 desc)
/*row_number是分页函数,
partition by 是指按照后面的字段分区,
order by 后面是按照什么方式排序,先以字段2排序,再以字段3排序
合在一起就是按照字段1来分组,并以字段2,字段3方式排序
*/
示例:
select t.number,
t.fee,
ROW_NUMBER() OVER(PARTITION BY t.device_number ORDER BY t.is_this_innet desc, t.innet_date desc) rn
from BDW.FM_SUBJECT_M_1202_MX_NEW t
case…when…then…else…end
是个条件函数
case 字段 when =条件 then 结果1 else 结果2 end--end代表结尾(不可省略)
--第二种写法:
case when 字段=条件 then 结果1 else 结果2 end
示例:
case
when is_innet = '1' then
'是'
else
'否'
end innet--字段名
case is_innet
when = '1' then
'是'
else
'否'
end innet--字段名
decode()
decode(字段, 条件,结果1,结果2)
decode(字段,条件1,结果1,条件2,结果2,结果3)
示例:
decode(t.innet, '1', '是', '否')
decode(t.innet, '1', '是', '0','否','unkonw')