按月统计订单数量报表SQL语句(CASE 和DECODE的使用)
来源:互联网 发布:linux防火墙状态命令 编辑:程序博客网 时间:2024/05/21 22:47
本文主要是使用CASE 和DECODE实现按月统计订单数量,通过此示例希望能帮助读者理解CASE和DECODE在ORCALE中的使用。
1.使用CASE实现:
按 Ctrl+C 复制代码
按 Ctrl+C 复制代码
这是一条按月统计每个OPERATING_WAREHOUSE_CODE订单数量的SQL语句,统计2012年一到三月份每个OPERATING_WAREHOUSE_CODE的订单数量。
本文主要介绍下CASE WHEN THEN ELSE END AS的使用。
文中:
CASE WHEN TO_CHAR(M.ORDER_CREATION_DTE,'mm') = '01' THEN '1' ELSE '0' END AS M1
这段SQL主要是把表OMS_ORDER_HEAD中订单创建时间为一月份的标记为”1”,并且这段代码增加了一列M1,同样M2和M3分别对应二月份和三月份,根据订单创建的时间其对应的月份M1,M2,M3列的值会被标记为1。
SELECT OPERATING_WAREHOUSE_CODE,CASE WHEN TO_CHAR(M.ORDER_CREATION_DTE,'mm') = '01' THEN '1' ELSE '0' END AS M1,CASE WHEN TO_CHAR(M.ORDER_CREATION_DTE,'mm') = '02' THEN '1' ELSE '0' END AS M2,CASE WHEN TO_CHAR(M.ORDER_CREATION_DTE,'mm') = '03' THEN '1' ELSE '0' END AS M3FROM OMS_ORDER_HEAD MWHERE M.ORDER_CREATION_DTE > TO_DATE('2012-1-1','YYYY-MM-DD') AND M.ORDER_CREATION_DTE < TO_DATE('2012-4-1','YYYY-MM-DD')
其中这段SQL执行的结果如图:
然后在此基础上再对M1(一月),M2(二月),M3(三月)对应的订单数量用SUM进行统计。
整条SQL语句的执行结果入下图:
整条SQL语句用CASE WHEN THEN ELSE END AS结合SUM很好的统计出2012年前三个月每个OPERATING_WAREHOUSE_CODE的订单数量。
2.使用DECODE实现
当然我们同样可以通过使用ORACLE中的DECODE来实现同样的功能,DECODE的实现代码:
select OPERATING_WAREHOUSE_CODE,SUM(DECODE(TO_CHAR(OH.Order_Creation_Dte,'mm'),01,1,0)) as M1,SUM(DECODE(TO_CHAR(OH.ORDER_CREATION_DTE,'mm'),02,1,0)) AS M2,SUM(DECODE(TO_CHAR(OH.ORDER_CREATION_DTE,'mm'),03,1,0)) AS M3from OMS_ORDER_HEAD OHWHERE OH.ORDER_CREATION_DTE>TO_DATE('2012-1-1','YYYY-MM-DD') AND OH.ORDER_CREATION_DTE < TO_DATE('2012-4-1','YYYY-MM-DD')GROUP BY OPERATING_WAREHOUSE_CODEORDER BY OPERATING_WAREHOUSE_CODE
以上SQL可以达到上述CASE同样的效果。
在逻辑编程中,经常用到If – Then –Else 进行逻辑判断。在DECODE的语法中,实际上就是这样的逻辑处理过程。它的语法如下:
DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )
不管是用CASE还是DECODE都可以达到同样的效果,在理解的基础上我们可以灵活使用DECODE和CASE的用法。
阅读全文
0 0
- 按月统计订单数量报表SQL语句(CASE 和DECODE的使用)
- 按月统计的sql语句
- 实现按月消费统计的SQL语句
- Oracle Select语句中Case语句和decode函数的统计信息的差异
- Decode()函数和CASE语句的比较
- echart报表插件使用笔记(二)--按月统计
- 按月、周、日查询统计数据量的sql语句
- 按月统计数量
- SQL 语句按月份统计查询
- sql语句按月统计合计概率
- 按月查询客户余额报表的步骤和SQL脚本
- Oracle sql语句中不支持boolean类型(decode&case)
- Oracle sql语句中不支持boolean类型(decode&case)
- 本日、本周、本月和按月取数据的SQL语句
- 一个统计报表的SQL语句
- Oracle-Decode()函数和CASE语句的比较
- Oracle Decode()函数和CASE语句的比较
- Oracle Decode()函数和CASE语句的比较
- java面试题
- 10Python中的时间和日期
- heteamo.com网址日志
- CS 300 Consecutive Digits Signs 构造
- 解析数组类型的json串
- 按月统计订单数量报表SQL语句(CASE 和DECODE的使用)
- Enterprise Architect : 去掉UML图页面右侧那一道竖线
- 11Python中的函数
- bzoj 3262(cdq分治)
- iframe ul li
- PHP如何解决网站大流量与高并发的问题
- js页面跳转
- linux音频子系统
- iOS快速入门