select t.mon,nvl(tt.val,0) val from (select trunc(add_months(sysdate,-rownum+1),'mm') mon from col where rownum<7) t, (select trunc(coldate,'mm') mon2,sum(val) val from tbname where coldate>trunc(add_months(sysdate,-6),'mm') group by trunc(coldate,'mm')) tt t.mon = tt.mon2(+);
from Ta
group by date.month
(select trunc(add_months(sysdate,-rownum+1),'mm') mon from col where rownum<7) t,
(select trunc(coldate,'mm') mon2,sum(val) val from tbname
where coldate>trunc(add_months(sysdate,-6),'mm') group by trunc(coldate,'mm')) tt
t.mon = tt.mon2(+);