楼上的只统计了一个月的吧
WITH t AS
(SELECT ROWNUM
FROM DUAL
CONNECT BY ROWNUM <= 12)
SELECT TO_CHAR (LAST_DAY (TO_DATE ( TO_CHAR (SYSDATE, 'YYYY')
|| LPAD (TO_CHAR (ROWNUM), 2, 0),
'YYYYMM'
)
),
'YYYY-MM'
)
|| '月',
TO_CHAR (LAST_DAY (TO_DATE ( TO_CHAR (SYSDATE, 'YYYY')
|| LPAD (TO_CHAR (ROWNUM), 2, 0),
'YYYYMM'
)
),
'DD'
)
|| '天'
FROM t
直接全选复制粘贴运行
oracle 实现按周,月,季度,年查询统计数据
//按自然周统计
select to_char(date,'iw'),sum()
from
where
group by to_char(date,'iw')
//按自然月统计
select to_char(date,'mm'),sum()
from
where
group by to_char(date,'mm')
//按季统计
select to_char(date,'q'),sum()
from
where
group by to_char(date,'q')
//按年统计
select to_char(date,'yyyy'),sum()
from
where
group by to_char(date,'yyyy')
统计的时候注意:以上我写的统计知识统计当年的,要是跨年在存在逻辑上问题,需要根据需要格式化“统计时间”。可以根据需要参考下面的to_char函数
附:TO_CHAR函数说明
TO_CHAR(x[[,c2],C3])
【功能】将*期或数据转换为char数据类型
【参数】
x是一个date或number数据类型。
c2为格式参数
c3为NLS设置参数
如果x为*期nlsparm=NLS_DATE_LANGUAGE 控制返回的月份和*份所使用的语言。
如果x为数字nlsparm=NLS_NUMERIC_CHARACTERS 用来指定小数位和千分位的分隔符,以及货币符号。
NLS_NUMERIC_CHARACTERS ="dg", NLS_CURRENCY="string"
select
to_char(add_months(trunc(sysdate,'yyyy'),level-1),'yyyymm') year_month,
last_day(add_months(trunc(sysdate,'yyyy'),level-1))-add_months(trunc(sysdate,'yyyy'),level-1)+1 days
from
dual
connect by level<=12