獲取連續數字示例代碼:函數
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