select com,sum(decode(to_char(date,'mm'),'01',money,0)) money1,sum(decode(to_char(date,'mm'),'02',money,0) money2,sum(decode(to_char(date,'mm'),'03',money,0) money3 .... from table where data >= ? and data <= ? group by com;

解决方案 »

  1.   

    楼上的办法真的很好,刚才我没有说清楚,我需要按照某年某月进行统计,持续1年,比如:起始日期是2002/10那么需要统计的月份是2002/10,2002/11,....2003/1...2003/9,并且需要和money1....money12一一对应!!!多谢!!!
      

  2.   

    select com,sum(decode(to_char(date,'mm'),'01',money,0)) money1,sum(decode(to_char(date,'mm'),'02',money,0) money2,sum(decode(to_char(date,'mm'),'03',money,0) money3 .... from table where data >= ? 
    group by com;
      

  3.   

    to_char(date,'mm'),'01' 那当然要改了哦 把年份也要加上了咯!!!!!
      

  4.   

    select com,to_char(date,'YYYY-MM') ny,sum(money) money 
    from tablename where to_char(date,'YYYY') = '2002' 
    group by com,to_char(date,'YYYY-MM');
      

  5.   

    用union all 可能结构更清楚
      

  6.   

    Money1...Money12代表什么,代表各月的总额吗?
      

  7.   

    select com,sum(decode(trunc(MONTHS_BETWEEN(date,to_date(inputmonth,'yyyy/mm'))),0,money,0)) money0,
               sum(decode(trunc(MONTHS_BETWEEN(date,to_date(inputmonth,'yyyy/mm'))),1,money,0)) money1,
       sum(decode(trunc(MONTHS_BETWEEN(date,to_date(inputmonth,'yyyy/mm'))),2,money,0)) money2,
               sum(decode(trunc(MONTHS_BETWEEN(date,to_date(inputmonth,'yyyy/mm'))),3,money,0)) money3,
               sum(decode(trunc(MONTHS_BETWEEN(date,to_date(inputmonth,'yyyy/mm'))),4,money,0)) money4,
               sum(decode(trunc(MONTHS_BETWEEN(date,to_date(inputmonth,'yyyy/mm'))),5,money,0)) money5,
               sum(decode(trunc(MONTHS_BETWEEN(date,to_date(inputmonth,'yyyy/mm'))),6,money,0)) money6,
               sum(decode(trunc(MONTHS_BETWEEN(date,to_date(inputmonth,'yyyy/mm'))),7,money,0)) money7,
               sum(decode(trunc(MONTHS_BETWEEN(date,to_date(inputmonth,'yyyy/mm'))),8,money,0)) money8,
               sum(decode(trunc(MONTHS_BETWEEN(date,to_date(inputmonth,'yyyy/mm'))),9,money,0)) money9,
               sum(decode(trunc(MONTHS_BETWEEN(date,to_date(inputmonth,'yyyy/mm'))),10,money,0)) money10,
               sum(decode(trunc(MONTHS_BETWEEN(date,to_date(inputmonth,'yyyy/mm'))),11,money,0)) money11
    from table where date >= inputmonth 
    group by com;