关于decode函数的用法

来源:互联网 发布:什么是淘宝返利 编辑:程序博客网 时间:2024/05/16 23:33
在开发过程中遇到的一个实际问题,现在我把问题说一下。
首先我先把列名介绍一下,因为表中列很多,所以只介绍有用的几个列
f_sbdwid 申请单位ID
f_zt     专利状态(0为未授权 ,1 为已授权)
单位ID如08是本单位,那么0805就是它的下级单位
表名为tpatent_basic
所要显示的是:
显示申请单位和它的下级单位的未授权数和已授权数
例如:
单位                未授权              已授权
08                  1                     0
0805                1                     1
这样的表。
原始数据如下:
f_sbdwid         f_zt   
08                1
0805              0
0806              1
08                1
0803              1
0806              0

sql如下:

select f_sbdwid, sum(decode(f_zt, 1, 1, 0)) 已授权 , sum(decode(f_zt, 0, 1, 0)) 未授权
from tpatent_basic
group by f_sbdwid;

结果如下:

f_sbdwid    已授权    未授权
08            2    0
0803          1    0
0806          1    1
0805          0    1


下面我介绍一下decode()函数。这个函数只针到ORACLE数据库

说明:decode()函数相当于一条件语句(IF)
DECODE(input_value,value,result[,value,result…][,default_result]);
input_value试图处理的数值。
value 是一组成序偶的数值。
result 是一组成序偶的结果值
default_result 未能与任何一序偶匹配成功时,函数返回的默认值







原创粉丝点击