需求是这样的求各位大牛怎么搞定啊!  原是据在一张 T 表中已试过这种写法
SELECT DISTINCT A.a,
                A.b,
                A.c,
                SUM(A.d) OVER(PARTITION BY A.a,A.b)
 FROM tA
 WHERE SUBSTR(A.a, 1, 6) = '201305'这种出来的的结果为本日累加但是不会本月累加啊Oracle累计分析函数

解决方案 »

  1.   

    SELECT A.a,A.b,A.c,
           SUM(A.d) OVER(PARTITION BY SUBSTR(A.a, 5, 2)  order by 日期)
     FROM tA
     WHERE SUBSTR(A.a, 1, 6) = '201305'没看出来你的日期从哪取的。
      

  2.   


    不是这样的  是分开计算的  A 就算A下面的 B就累加B下面的 C。
      

  3.   

    不是这样吗?
    with t as
    (
         select date'2013-08-01' dt,1 a,10 b,100 c from dual union all
         select date'2013-08-02' dt,2 a,20 b,200 c from dual union all
         select date'2013-08-03' dt,3 a,30 b,300 c from dual union all
         select date'2013-08-04' dt,4 a,40 b,400 c from dual union all
         select date'2013-08-05' dt,5 a,50 b,500 c from dual
    )select dt,a,b,c,
           sum(a) over(order by dt) aa,
           sum(b) over(order by dt) bb,
           sum(c) over(order by dt) cc
    from t
         dt    a    b    c    aa    bb    cc
    ---------------------------------------------------------------------------
    1 2013/8/1 1 10 100 1 10 100
    2 2013/8/2 2 20 200 3 30 300
    3 2013/8/3 3 30 300 6 60 600
    4 2013/8/4 4 40 400 10 100 1000
    5 2013/8/5 5 50 500 15 150 1500
      

  4.   

    上面的要求显示结果怎样的  如果是这样的话 那肯定要用动态sql   日期     上海    北京   天津
    20130101   23   44   55
    20130102   3446   478   600
    ...
      

  5.   

    按月份地区分组 不就可以了么...
    with t1 as
    (
         select 20130101 c1,'上海' c2,23 c3 from dual union all
         select 20130101 c1,'北京' c2,25 c3 from dual union all
         select 20130103 c1,'上海' c2,44 c3 from dual union all
         select 20130103 c1,'北京' c2,55 c3 from dual union all
         select 20130104 c1,'上海' c2,50 c3 from dual union all
         select 20130104 c1,'北京' c2,28 c3 from dual union all
         select 20130201 c1,'上海' c2,61 c3 from dual union all
         select 20130201 c1,'北京' c2,38 c3 from dual union all
         select 20130203 c1,'上海' c2,56 c3 from dual union all
         select 20130203 c1,'北京' c2,67 c3 from dual union all
         select 20130204 c1,'上海' c2,88 c3 from dual union all
         select 20130204 c1,'北京' c2,73 c3 from dual 
    )select c1,c2,sum(c3) over(partition by substr(c1,1,6),c2 order by c1,c2) c3
    from t1     c1      c2    c3
    ----------------------------------------------
    1 20130101 北京 25
    2 20130103 北京 80
    3 20130104 北京 1084 20130101 上海 23
    5 20130103 上海 67
    6 20130104 上海 1177 20130201 北京 38
    8 20130203 北京 105
    9 20130204 北京 17810 20130201 上海 61
    11 20130203 上海 117
    12 20130204 上海 205