Sql 在Oracle中使用MM

Sql 在Oracle中使用MM,sql,oracle,plsql,Sql,Oracle,Plsql,我不知道我的问题出在哪里。我只是在我的查询中输入“MM”来获得每月的结果。但当我运行它时,它会在365天内给我一个每日结果,而不是每月结果。请帮帮我 我的问题是: SELECT 'Data' || ',' || TO_CHAR(d.dtime_day, 'MM/dd/yyyy') || ',' || NVL(o.cnt_opened, 0) --as cnt_opened || ',' || NVL(c.cnt_closed, 0) --as cnt_c

我不知道我的问题出在哪里。我只是在我的查询中输入“MM”来获得每月的结果。但当我运行它时,它会在365天内给我一个每日结果,而不是每月结果。请帮帮我

我的问题是:

SELECT 'Data'
       || ',' || TO_CHAR(d.dtime_day, 'MM/dd/yyyy')
       || ',' || NVL(o.cnt_opened, 0) --as cnt_opened
       || ',' || NVL(c.cnt_closed, 0) --as cnt_closed
FROM owner_dwh.dc_date d
  LEFT JOIN (
              SELECT
                TRUNC(t.create_time, 'MM') AS report_date,
                count(*)                   AS cnt_opened
              FROM app_account.otrs_ticket t
              WHERE t.create_time BETWEEN SYSDATE - 365 AND SYSDATE
              GROUP BY TRUNC(t.create_time, 'MM')
            ) o ON d.dtime_day = o.report_date
  LEFT JOIN (
              SELECT
                TRUNC(t.close_time, 'MM') AS report_date,
                count(*)                  AS cnt_closed
              FROM app_account.otrs_ticket t
              WHERE t.close_time BETWEEN SYSDATE - 365 AND SYSDATE
              GROUP BY TRUNC(t.close_time, 'MM')
            ) c ON d.dtime_day = c.report_date
WHERE d.dtime_day BETWEEN SYSDATE - 365 AND SYSDATE
ORDER BY d.dtime_day;
结果:

Data,01/25/2013,0,0
Data,01/26/2013,0,0
Data,01/27/2013,0,0
Data,01/28/2013,0,0
Data,01/29/2013,0,0
Data,01/30/2013,0,0

您对
DC\u DATE
的初始查询将获取过去365天内的每个日期。如果您只运行该部分:

SELECT 'Data'
||','||TO_CHAR(D.DTIME_DAY,'MM/dd/yyyy')
FROM OWNER_DWH.DC_DATE d
WHERE d.DTIME_DAY BETWEEN SYSDATE -365 AND SYSDATE
ORDER BY D.DTIME_DAY;
。。。您希望返回365行

您要加入的子查询只返回每个月第一天的汇总计数。因此,当你加入时,你将在每个月的第一天得到一个实际值(可能是零),但每隔一天总是为零。您可以通过调整
where
子句来避免这种情况,例如:

WHERE d.DTIME_DAY BETWEEN SYSDATE -365 AND SYSDATE
AND d.DTIME_DAY = TRUNC(s.DTIME_DAY, 'MM')

只显示每个月的第一个月,如果子查询中没有匹配的数据,则外部联接仍将显示具有零值的日期。

请使用您的输出进行更新!我现在更新@maheswaranravisankar怎么做AlexPoole?你是否粘贴了错误的查询?第二个看起来更适合这种情况,因为它使用了更多的
MM
,并且在过滤器中有
365
。请准确发布您正在运行的内容。每个月的第一天,你会得到非零值吗?这可能是因为外部连接。抱歉@AlexPoole我没有看到我的查询,我只是为MM编辑了正确的查询,但我总是在标题中看到每日结果。谢谢你的帮助:)