日期:2014-05-17 浏览次数:20910 次
with t1 as
(
select 'A110' c1,date'2012-09-28' c2 from dual
union all
select 'A100' c1,date'2012-07-09' c2 from dual
union all
select 'A110' c1,date'2012-10-01' c2 from dual
union all
select 'A110' c1,date'2012-10-01' c2 from dual
union all
select 'A110' c1,date'2012-10-03' c2 from dual
union all
select 'A110' c1,date'2012-10-05' c2 from dual
union all
select 'A120' c1,date'2012-10-01' c2 from dual
union all
select 'A000' c1,date'2012-10-03' c2 from dual
)
select c.c1,c.t_date,count(d.c2) c_num
from
(
select a.c1,b.t_date
from
(
select distinct c1
from t1
where c2 between trunc(date'2012-10-03','month') and date'2012-10-03'
) a,
(
select trunc(date'2012-10-03','month')+level-1 t_date
from dual
connect by level <= date'2012-10-03'-trunc(date'2012-10-03','month')+1
) b
) c left join t1 d on c.c1 = d.c1 and c.t_date = d.c2
group by c.c1,c.t_date
order by c.c1,c.t_date
c1 t_date c_num
--------------------------------------
1 A000 2012/10/1 0
2 A000 2012/10/2 0
3 A000 2012/10/3 1
4 A110 2012/10/1 2
5 A110 2012/10/2 0
6 A110 2012/10/3 1
7 A120 2012/10/1 1
8 A120 2012/1