当前位置: 代码迷 >> Oracle管理 >> 请教怎么统计每个月的合计
  详细解决方案

请教怎么统计每个月的合计

热度:78   发布时间:2016-04-24 05:27:18.0
请问如何统计每个月的合计
比如表中数据是
  time count
2012-01-01 1000
2012-01-02 500
2012-02-01 800
2012-03-05 2000

要查询出来
1月 1500
2月 800
3月 2000
4月 0
5月 0
。。。

 刚开始学这个 不怎么会 这样说可以理解吗 麻烦各位了

------解决方案--------------------
select to_char(t.time,'yyyy-mm')||'月' month,
sum(t.count) sumy
from tab t
 group by to_char(t.time,'yyyy-mm');
------解决方案--------------------
SQL code
create table t1(d_date date,d_count number);insert into t1 values (date'2012-01-01',1000);insert into t1 values (date'2012-01-02',500);insert into t1 values (date'2012-01-03',500);insert into t1 values (date'2012-02-01',800);insert into t1 values (date'2012-02-02',200);insert into t1 values (date'2012-03-01',300);insert into t1 values (date'2012-04-01',400);insert into t1 values (date'2012-07-01',700);select to_char(a.c1,'yyyy-mm') 月份,nvl(sum(t1.d_count),0) 数量from(SELECT ADD_MONTHS(DATE'2011-12-01',LEVEL) AS c1    FROM DUAL   CONNECT BY LEVEL <= 12) a left join t1 on to_char(a.c1,'yyyy-mm')=to_char(t1.d_date,'yyyy-mm')group by to_char(a.c1,'yyyy-mm')order by to_char(a.c1,'yyyy-mm')       月份     数量-----------------------------------------1    2012-01    20002    2012-02    10003    2012-03    3004    2012-04    4005    2012-05    06    2012-06    07    2012-07    7008    2012-08    09    2012-09    010    2012-10    011    2012-11    012    2012-12    0
------解决方案--------------------
SQL code
--构建1年的12个月SELECT ADD_MONTHS(DATE'2011-12-01',LEVEL) AS c1    FROM DUAL   CONNECT BY LEVEL <= 12--构建一个月的日期select to_char(to_date('2012-03', 'YYYY-MM') + rownum - 1, 'YYYY-MM-DD') as sdate from dual                      connect by rownum <= to_number(to_char(last_day(to_date('2012-03', 'YYYY-MM')), 'dd'))
  相关解决方案