oracle sql
2015-06-25 10:54
741 查看
1. 计算空值问题,替代+
NVL2(expr1,expr2,expr3)
Oracle在NVL()的功能上扩展,提供了NVL2函数。
功能:oracle中常用函数,如果参数表达式expr1值为NULL,则NVL2()函数返回参数表达式expr3的值;如果参数表达式expr1值不为NULL,则NVL2()函数返回参数表达式expr2的值。
即:NVL2(表达式,不为空设值,为空设值)。
2.decode
decode(value,if1,then1,if2,then2,if3,then3,...,else)
例子:
select lprq,
count(*) zs,
count(decode(jylx, 'A', 1, null)) mz,
count(decode(jylx, 'B', 1, null)) zy,
sum(jbjjzf) zcf,
sum(decode(jylx, 'A', jbjjzf, 0)) mzf,
sum(decode(jylx, 'B', jbjjzf, 0)) zyf
from (select 'A' jylx, a.mxlsh, a.jbjjzf, substr(a.lprq, 5, 2) lprq
from tb_sydb_a a
where 1 = 1
union all
select 'B' jylx, b.mxlsh, b.jbjjzf, substr(b.lprq, 5, 2) lprq
from tb_sydb_b b
where 1 = 1)
group by lprq
order by lprq
NVL2(expr1,expr2,expr3)
Oracle在NVL()的功能上扩展,提供了NVL2函数。
功能:oracle中常用函数,如果参数表达式expr1值为NULL,则NVL2()函数返回参数表达式expr3的值;如果参数表达式expr1值不为NULL,则NVL2()函数返回参数表达式expr2的值。
即:NVL2(表达式,不为空设值,为空设值)。
2.decode
decode(value,if1,then1,if2,then2,if3,then3,...,else)
例子:
select lprq,
count(*) zs,
count(decode(jylx, 'A', 1, null)) mz,
count(decode(jylx, 'B', 1, null)) zy,
sum(jbjjzf) zcf,
sum(decode(jylx, 'A', jbjjzf, 0)) mzf,
sum(decode(jylx, 'B', jbjjzf, 0)) zyf
from (select 'A' jylx, a.mxlsh, a.jbjjzf, substr(a.lprq, 5, 2) lprq
from tb_sydb_a a
where 1 = 1
union all
select 'B' jylx, b.mxlsh, b.jbjjzf, substr(b.lprq, 5, 2) lprq
from tb_sydb_b b
where 1 = 1)
group by lprq
order by lprq
相关文章推荐
- ORACLE TNS Listener远程注册投毒(Poison Attack)漏洞
- Oracle11g使用exp导出空表
- PL/SQL客户端连Oracle很快就断开问题的解决
- 关于oracle数据库安装问题
- ORACLE 层次查询、目录树节构查询
- 恢复已经删除的记录 oracle
- oracle获取当前系统时间
- Oracle常用操作
- Oracle中的延迟块的清除原理
- [10046]oracle 10046跟踪的使用
- ORACLE 数据库用户备份及表备份
- Oracle Merge 使用
- Oracle中Using用法 (转)
- Oracle dblink初始(一)
- Oracle安装及使用入门
- Oracle Key Flexfields Qualifiers
- 解决Oracle ORA-12505 error
- oracle 大对象
- 新手Oracle安装及使用入门
- oracle自定义异常