日期:2014-05-17 浏览次数:20985 次
with t1 as
(
select date'2012-03-01' c1,100 c2 from dual
union all
select date'2012-03-14' c1,200 c2 from dual
union all
select date'2012-04-03' c1,300 c2 from dual
union all
select date'2012-04-22' c1,400 c2 from dual
)
select to_char(a_date,'yyyy-mm') a_date,nvl(sum(c2),0) c2
from
(
select add_months(date'2012-01-01',level-1) a_date
from dual
connect by level <= 5
) a left join t1 b on to_char(a_date,'yyyy-mm') = to_char(c1,'yyyy-mm')
group by to_char(a_date,'yyyy-mm')
order by a_date
a_date c2
---------------------------
1 2012-01 0
2 2012-02 0
3 2012-03 300
4 2012-04 700
5 2012-05 0