关于oracle中的decode的使用
来源:互联网 发布:印刷自助报价系统源码 编辑:程序博客网 时间:2024/06/09 15:47
在项目中发现了一个oracle decode的用法。
简化后如下:
select sum(decode(t.del_flg,2,1,0)) from tm_employee_infor t;
这是可以统计表中del_flg状态值为2的数量,decode函数解释参见:点击打开链接
这个sql看着有点奇怪,我们先执行下内层函数decode:
select decode(t.del_flg,2,1,0) from tm_employee_infor t;
执行结果(部分)如下:
从执行结果可以看出,这一列中根据decode函数用法: if t.del_flg is 2
then 1
else 0;
然后外层函数sum()会对该列中的数据进行叠加,就可以实现根据不同条件值来统计总数。
通常情况下,使用该方法可以只用一个很短的sql就可以代替使用where,union子句的方法。
另外贴上项目中使用的稍微复杂的统计总数的sql:
select rownum, id company_id, organization_name, dimention_desc, totalnum, status_1, status_2, status_3, status_4, status_5, status_6, status_8, status_9 from (select t.organization_name, t.dimention_desc, t.id, sum(1) totalnum, sum(decode(t.status, 1, 1, 0)) status_1, sum(case when t.status = 1 and t.est_comp_date < sysdate then 1 else 0 end) status_6, sum(decode(t.status, 2, 1, 0)) status_2, sum(decode(t.status, 3, 1, 0)) status_3, sum(decode(t.status, 4, 1, 0)) status_4, sum(decode(t.status, 5, 1, 0)) status_5, sum(decode(t.status, 8, 1, 0)) status_8, sum(decode(t.status, 9, 1, 0)) status_9 from (select totd.data_tab_description, td.dimention_desc, toi.id, toi.organization_name, todt.batchname, todt.user_name, todt.status, todt.est_comp_date, decode(todt.status, 1, '任务待填写', 2, '任务待审核', '4', '任务已通过', 5, '退回', 9, '草稿', 3, '数据校验完成任务待复审状态') from tm_ori_data_task todt, ts_ori_tab_opr_def totod, ts_ori_tab_def totd, tm_company tc, tm_org_info toi, ts_dimention td where todt.ori_tab_opr_def_id = totod.id and totod.ts_ori_tab_def_id = totd.id and todt.company_id = tc.id and tc.tm_org_info_id = toi.id and tc.dimention_id = td.id and (todt.del_flg = 1 or todt.del_flg = 0 or todt.del_flg is null) and todt.task_date >= to_date('2014-05-01', 'yyyy-MM-dd') and todt.task_date <= to_date('2015-03-03', 'yyyy-MM-dd') and (todt.company_id = 10 or toi.parent_id = 10) order by totd.id) t group by t.organization_name, t.id, t.dimention_desc order by t.organization_name asc)
交流可以致邮:wfeiyangvip@163.com
谢谢大家!
转载请注明出处!
0 0
- 关于oracle中的decode的使用
- oracle中的decode的使用
- oracle中的decode的使用
- oracle中的decode的使用
- oracle中的decode的使用
- oracle中的decode的使用
- oracle中的decode的使用
- oracle中的decode的使用
- oracle中的decode的使用
- oracle中的decode的使用
- oracle中的decode的使用
- oracle中的decode的使用
- oracle中的decode的使用
- oracle中的decode的使用
- oracle中的decode的使用
- oracle中的decode的使用
- oracle中的decode的使用
- oracle中的decode的使用
- codeforces 295D Greg and Caves
- jQuery: 在this的环境中使用选择器
- RecyclerView的基本用法 (一)
- 很好用的上传代码
- CodeForces 407B Long Path
- 关于oracle中的decode的使用
- Google gRPC 简介
- Git协议
- 安卓尺寸单元
- Valgrind简单用法
- Blob、InputStream、byte 互转 .
- 中小型企业网站如何做好数据备份?
- 梯度下降算法
- 在windows 7上安装MongoDB