在开发过程中遇到的一个实际问题,现在我把问题说一下。
首先我先把列名介绍一下,因为表中列很多,所以只介绍有用的几个列
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 未能与任何一序偶匹配成功时,函数返回的默认值
首先我先把列名介绍一下,因为表中列很多,所以只介绍有用的几个列
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 未能与任何一序偶匹配成功时,函数返回的默认值