对一年中的每一天,每一季度,没有个月,每一周,没一天进行统计
对一年中的每一天,每一季度,没个月,每一周,没一天进行统计
![对一年中的每一天,每一季度,没有个月,每一周,没一天进行统计 对一年中的每一天,每一季度,没有个月,每一周,没一天进行统计](/default/index/img?u=aHR0cDovL3d3dy5teWV4Y2VwdGlvbnMubmV0L2ltZy8yMDE0LzAzLzE4LzEwMTAyMDc3LmpwZw==)
------解决方案--------------------
这个是将一个月的全遍历,就是即使表中没有2号的数据,也能有一条统计记录。如果没有这个需求的话,直接用下面的就行了:
------解决方案--------------------
SELECT T1.DDATE, T2.SS, T2.CC
FROM (SELECT TO_CHAR(SDATE + (ROWNUM - 1), 'yyyy-mm-dd') DDATE
FROM (SELECT TO_DATE('2014-04-01', 'yyyy-mm-dd') SDATE,
TO_DATE('2014-04-30', 'yyyy-mm-dd') EDATE
FROM DUAL) T
CONNECT BY SDATE + (ROWNUM - 1) <= EDATE) T1,
(SELECT TO_CHAR(SERVICE_OPENTIME, 'yyyy-mm-dd') SDATE,
SUM(1) SS,
COUNT(1) CC
FROM T_AGENT_SERVICE_MSISDN
WHERE TO_CHAR = (SERVICE_OPENTIME, 'yyyy-mm') = '2014-04'
GROUP BY SERVICE_OPENTIME) T2
WHERE T1.DDATE = T2.SDATE(+)
这个是将一个月的全遍历,就是即使表中没有2号的数据,也能有一条统计记录。如果没有这个需求的话,直接用下面的就行了:
SELECT TO_CHAR(SERVICE_OPENTIME, 'yyyy-mm-dd') SDATE,
SUM(1) SS,
COUNT(1) CC
FROM T_AGENT_SERVICE_MSISDN
WHERE TO_CHAR = (SERVICE_OPENTIME, 'yyyy-mm') = '2014-04'
GROUP BY SERVICE_OPENTIME