比如: 
有张表为所有代理商每日发展的不同品牌的数量(2008年间) 代理商ID  品牌  日期        日发展量 
1111      a    20080101    1 
2222      a    20080101    2 
1111      b    20080102    3 
1111      a    20080102    2 
2222      a    20080201    1 
2222      a    20080202    1 
... 
... 
如何统计出相对于某天的不同品牌的本月总发展量,然后最后要增加到上面的新表中。 
比如统计成这样的: 代理商ID  品牌  日期        日发展量    本月发展量 
1111      a    20080101    1          1 
2222      a    20080101    2          2 
1111      b    20080102    3          3 
1111      a    20080102    2          3 
.... 
....          
2222      a    20080201    1          1 
2222      a    20080202    1          2 不知道我表述清楚没.. 谢谢回答! 

解决方案 »

  1.   

    select t.*,sum(日发展量)over(partition by 代理商ID,品牌,to_char(日期,'yyyymm') order by 代理商ID) from table t
    order by 代理商ID
      

  2.   

    sum(日发展量)over(partition by 代理商ID,品牌,to_char(日期,'yyyymm') order by 代理商ID)
    改成
    sum(日发展量)over(partition by 代理商ID,品牌,substr(日期,1,6) order by 代理商ID)
      

  3.   

    sum(日发展量)over(partition by 代理商ID,品牌,substr(日期,1,6))
      

  4.   

    增加字段
    alter table table1 add 本月发展量 number;
    然后更新
    update table1 a set 本月发展量=(select s from(
        select  代理商ID,品牌,日期,
          sum(日发展量)over(partition by 代理商ID,品牌,substr(日期,1,6))s
        from table1)
      where 代理商ID=a.代理商ID and 品牌=a.品牌 and 日期=a.日期)
      

  5.   

    你日期是字符型的,那就用substr()函数!
      

  6.   


    CREATE TABLE test1(dlsId NUMBER(5,0), pp CHAR(4), rq DATE, rfzl NUMBER(9,0));CREATE TABLE test2(dlsId NUMBER(5,0), pp CHAR(4), rq DATE, rfzl NUMBER(9,0), byfzl NUMBER(9,0));INSERT INTO test1(dlsId, pp, rq, rfzl)
    VALUES(1111,'a',TO_DATE('20080101','yyyymmdd'),1);
    INSERT INTO test1(dlsId, pp, rq, rfzl)
    VALUES(2222,'a',TO_DATE('20080101','yyyymmdd'),2);
    INSERT INTO test1(dlsId, pp, rq, rfzl)
    VALUES(1111,'b',TO_DATE('20080102','yyyymmdd'),3);
    INSERT INTO test1(dlsId, pp, rq, rfzl)
    VALUES(1111,'a',TO_DATE('20080102','yyyymmdd'),2);
    INSERT INTO test1(dlsId, pp, rq, rfzl)
    VALUES(2222,'a',TO_DATE('20080201','yyyymmdd'),1);
    INSERT INTO test1(dlsId, pp, rq, rfzl)
    VALUES(2222,'a',TO_DATE('20080202','yyyymmdd'),1);INSERT INTO test2(dlsId, pp, rq, rfzl, byfzl)
    SELECT t1.dlsId, t1.pp, t1.rq, t1. rfzl, t2.byfzl
     FROM  test1 t1 left join 
        (SELECT dlsId, pp, TO_CHAR(rq,'yyyymm') rq, NVL(SUM(rfzl),0) AS byfzl
          FROM test1 GROUP BY dlsId, pp, TO_CHAR(rq,'yyyymm') ) t2
     ON t1.dlsId=t2.dlsId AND t1.pp=t2.pp AND TO_CHAR(t1.rq,'yyyymm')=t2.rq;SELECT t2.dlsId "代理商ID", t2.pp "品牌", t2.rq "日期", t2.rfzl "日发展量", t2.byfzl "本月发展量"
     FROM test2 t2;
      

  7.   

    update table1 a set 本月发展量=(select s from( 
        select  代理商ID,品牌,日期, 
          sum(日发展量)over(partition by 代理商ID,品牌,substr(日期,1,6)
             order by 日期 rows between unbounded preceding and current row)s 
        from table1) 
      where 代理商ID=a.代理商ID and 品牌=a.品牌 and 日期=a.日期)