decode
decode(value,if1,then1,if2,then2,if3,then3,...,else)
value表示表中的任意一列(不考虑数据类型)或任意计算结果。每一行都对value进行测试,如果value符合条件if1,这decode的结果为then1;如果value符合条件if2,这decode的结果为then2;如果value与任意一个if都不符,则decode的结果为else。
1、通过decode替换值
decode(列,'条件','替换值','否则值')
2、decode中可以嵌套decode
decode(列,'条件',decode(列,'条件','替换值','否则值'),'否则值')
3、decode中的大于和小于
最简单的方法是使用sign函数。如果返回1,数值为正数;如果返回0,数值为0;如果为-1,则数值为负数。
decode(sign(xxxx-5),1,'正数','负数')
4、coalesce
coalesce将返回在值列表中遇到的第一个非null值。
coalesce(column1,column2,...)
case
select case aaa
when 1 then '1'
when 2 then '2'
when 3 then '3'
esle 4
end
from test;
1、case 与用法decode类似
2、case也可以嵌套case
pivot
可以使用pivot运算符和unpivot运算符处理交叉表数据。在交叉表报表中,行数据显示为单独的列。
select * from (select aa,bb from test t1) pivot (max(aa) for cc in ('xx','yy'));
unpivot执行与pivot相反的功能,是将列转换为行。
使用pivot和unpivot运算符可以将列转换为行或将行恢复为列,它们与decode和case操作符联合起来使用,可以为数据的显示和操纵提供强大的工具。
本公众号是个人学习工作笔记,希望大家发现问题能及时和我本人沟通,希望你与我共同成长。个人微信zgtj12306。
欢迎关注“自学Oracle”