获取连续数字示例代码:函数
1 -- 获取连续的数据(注意:level只用使用<,<=,=符号) 2 select level from dual connect by level <= 5
结果展现:spa
获取连续的日期示例代码:code
1 -- 获取连续的指定时间(注意:获取连续的时间须要包含当天须要再+1天) 2 select sysdate-level+1 days from dual connect by level <= 5
结果展现:blog
统计填充示例代码:class
1 /* 2 问题:查询1981年每个月入职的人数,没有入职的以0补充 3 解决:1.建立一个连续的年份表进行关联 4 2.关联的条件,截取时间相等进行关联 5 3.注意:a.须要全部的时间,所以要让时间表主表 6 b.若是emp表有条件,要单独在(SELECT * FROM emp)中添加,否则会影响结果,致使时间不全 7 c.使用其余函数,如SUM求和可能为空用NVL函数,这里以count函数举例 8 */ 9 SELECT times.days 月份,NVL(COUNT(e.EMPNO),0) 入职人数 FROM (SELECT * FROM emp) e 10 RIGHT JOIN ( 11 select TO_CHAR(ADD_MONTHS(TO_DATE('1981-12-01', 'yyyy-MM-dd'),-LEVEL+1),'yyyy-MM') days 12 FROM dual CONNECT BY LEVEL <= 12 13 ) times 14 ON SUBSTR(TO_CHAR(e.HIREDATE,'yyyy-MM-dd hh24:mi:ss'), 0, 7) = times.days 15 GROUP BY times.days 16 ORDER BY times.days
结果展现:date