oracle 查询当月每天数据,怎么写

当月每天的都要进行查询,没有数据设置为0
2025-03-23 18:13:00
推荐回答(1个)
回答1:

--1、考虑到没有数据的也要总结出一条0的记录,那我们需要先生成一张当月的日期中间表
SELECT FDATE
   FROM (SELECT TRUNC(SYSDATE, 'MONTH') + LEVEL - 1 AS FDATE
           FROM DUAL
         CONNECT BY LEVEL <= 31) T
  WHERE TO_CHAR(FDATE, 'MM') = TO_CHAR(SYSDATE, 'MM')

--2、以上边的表作为左链接的表,与你的数据表的日期做关联查询就可以得出你要的结果
SELECT A.FDATE, NVL(B.FNUM, 0)
  FROM (SELECT FDATE
          FROM (SELECT TRUNC(SYSDATE, 'MONTH') + LEVEL - 1 AS FDATE
                  FROM DUAL
                CONNECT BY LEVEL <= 31) T
         WHERE TO_CHAR(FDATE, 'MM') = TO_CHAR(SYSDATE, 'MM')) A
  LEFT JOIN (SELECT 日期字段名 AS FDATE, COUNT(1) AS FNUM
               FROM 表名 B
              WHERE TO_CHAR(日期字段名, 'YYYYMM') = TO_CHAR(SYSDATE, 'YYYYMM')
              GROUP BY 日期字段名) B
    ON A.FDATE = B.FDATE
 ORDER BY A.FDATE