如题所述
楼ä¸çåªç»è®¡äºä¸ä¸ªæçå§
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
ç´æ¥å ¨éå¤å¶ç²è´´è¿è¡
追é®ææ³éå®ææå°±åºæ¥ææç天æ°ï¼è¦æä¹å¼å¢
追çselect add_months(to_date('201202', 'YYYYMM'),1)-to_date('201202', 'YYYYMM') from dual
ä½ ææ份æ¹ä¸ä¸å°±OK
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-09-26
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(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"
第2个回答 推荐于2016-11-15
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
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