5分?楼主果然惜分如金!!
select decode(to_char(a,'yyyy-mm'), '2005-01', b, 0),
       decode(to_char(a,'yyyy-mm'), '2005-02', b, 0),
       decode(to_char(a,'yyyy-mm'), '2005-03', b, 0),
       decode(to_char(a,'yyyy-mm'), '2005-04', b, 0),
       decode(to_char(a,'yyyy-mm'), '2005-05', b, 0),
       decode(to_char(a,'yyyy-mm'), '2005-06', b, 0),
       decode(to_char(a,'yyyy-mm'), '2005-07', b, 0),
       decode(to_char(a,'yyyy-mm'), '2005-08', b, 0),
       decode(to_char(a,'yyyy-mm'), '2005-09', b, 0),
       decode(to_char(a,'yyyy-mm'), '2005-10', b, 0),
       decode(to_char(a,'yyyy-mm'), '2005-11', b, 0),
       decode(to_char(a,'yyyy-mm'), '2005-12', b, 0),
from tab

解决方案 »

  1.   

    select sum(decode(to_char(to_date(a, 'yyyy-mm-dd'),'yyyy-mm'), '2005-01', b, 0)) "1",
           sum(decode(to_char(to_date(a, 'yyyy-mm-dd'),'yyyy-mm'), '2005-02', b, 0)) "2",
           sum(decode(to_char(to_date(a, 'yyyy-mm-dd'),'yyyy-mm'), '2005-03', b, 0)) "3",
           sum(decode(to_char(to_date(a, 'yyyy-mm-dd'),'yyyy-mm'), '2005-04', b, 0)) "4",
           sum(decode(to_char(to_date(a, 'yyyy-mm-dd'),'yyyy-mm'), '2005-05', b, 0)) "5",
           sum(decode(to_char(to_date(a, 'yyyy-mm-dd'),'yyyy-mm'), '2005-06', b, 0)) "6",
           sum(decode(to_char(to_date(a, 'yyyy-mm-dd'),'yyyy-mm'), '2005-07', b, 0)) "7",
           sum(decode(to_char(to_date(a, 'yyyy-mm-dd'),'yyyy-mm'), '2005-08', b, 0)) "8",
           sum(decode(to_char(to_date(a, 'yyyy-mm-dd'),'yyyy-mm'), '2005-09', b, 0)) "9",
           sum(decode(to_char(to_date(a, 'yyyy-mm-dd'),'yyyy-mm'), '2005-10', b, 0)) "10",
           sum(decode(to_char(to_date(a, 'yyyy-mm-dd'),'yyyy-mm'), '2005-11', b, 0)) "11",
           sum(decode(to_char(to_date(a, 'yyyy-mm-dd'),'yyyy-mm'), '2005-12', b, 0)) "12"
    from tmp测试过的拉!~~~~
      

  2.   

    我试过了再加分哦,呵呵,悄悄告诉你,我走错版了,我是sqlserver数据库。哈哈。
      

  3.   

    我骗你的,就是oracle,你写的还是不对,再写,努力哦,离拿分差的不远了哦,我去抽颗烟,你继续想哦。
      

  4.   

    快弄了一下午了,好郁闷,怎么外连接呀,我不太熟悉pl sql,帮忙大概写写行吗?
      

  5.   

    select nvl(count(*),0) smscount ,to_char(sendtime,'yyyy-mm') month,nvl(sum(fee),0) feesum
    from 
      (select '2005-01'  Date1  from  tmp union
         select '2005-02' as Date1  from tmp union
         select '2005-03' as Date1  from tmp union
         select '2005-04' as Date1  from tmp union
         select '2005-06' as Date1  from tmp union
         select '2005-07' as Date1  from tmp union
         select '2005-08' as Date1  from tmp union
         select '2005-09' as Date1  from tmp union
         select '2005-10' as Date1  from tmp union
         select '2005-11' as Date1  from tmp union
         select '2005-12' as Date1  from tmp ) a left join
    m_sendhistory b
    on
        a.Date1(+)=TO_CHAR(b.sendtime,'YYYY-MM')
    where deptid = 244and to_char(sendtime,'yyyy')='2006'
    group by to_char(sendtime,'yyyy-mm')
    order by to_char(sendtime,'yyyy-mm')提示无法在关联列中制定外部连接,怎么改改呀。