表结构及数据如上,在Oracel中写视图语句求每天的DS累计??然后在页面中以日期为条件SELECT * FROM 视图 WHERE RQ='' 来显示当天的DS累计,拿zu2举例,5月1号为1881.1,那么5月2号就应该为1881.1+1353.9,以此类推,也就是说在查询出来的表中,5月份每天的生产累计都要显示的,不是只显示一天的,最后所查询出的结果除了DS字段的值不一样外,其它的完全一样,在线等待。。

解决方案 »

  1.   

    如果你Oracle版本支持分析函数的话,用下面的语句实现累加:
    ====================Question=========================jmbdat    dayt    y       mon       
    27-9月 -07 2033.2 2007 200709     
    28-9月 -07 2750.28 2007 200709     
    29-9月 -07 2885.68 2007 200709     
    30-9月 -07 2556.68 2007 200709     
    01-10月-07 2903.04 2007 200710     
    02-10月-07 1002.96 2007 200710     
    03-10月-07 1038.24 2007 200710     
    对上边的表用sql处理下 变成下面的 jmbdat    dayt    y       mon       mont   
    27-9月 -07 2033.2 2007 200709    2033.2   
    28-9月 -07 2750.28 2007 200709    4783.28   
    29-9月 -07 2885.68 2007 200709    7669.16   
    30-9月 -07 2556.68 2007 200709    20225.84   
    01-10月-07 2903.04 2007 200710    2903.04   
    02-10月-07 1002.96 2007 200710    3906   
    03-10月-07 1038.24 2007 200710    4944.24   
    该怎么做啊?==================Solution=========================SQL:select tt.*,
          sum(tt.dayt)over(partitionby tt.monorder by tt.jmbdat,tt.y,tt.mon)as sum_dayt
     from tablename tt;
    Result :JMBDAT            DAYT          Y MON      SUM_DAYT 
    ----------- ---------- ---------- ------ ---------- 
    2007-9-27       2033.2       2007 200709     2033.2 
    2007-9-28      2750.28       2007 200709    4783.48 
    2007-9-29      2885.68       2007 200709    7669.16 
    2007-9-30      2556.68       2007 200709   10225.84 
    2007-10-1      2903.04       2007 200710    2903.04 
    2007-10-2      1002.96       2007 200710       3906 
    2007-10-7      1038.24       2007 200710    4944.24 7 rows selected 
      

  2.   


    select tt.*,
          sum(tt.dayt) over(partition by tt.mon order by tt.jmbdat,tt.y,tt.mon)as sum_dayt
     from tablename tt;
    论坛的"空格"有点不好使.
    还有一种方法用SUM+GROUP BY实现的累加:SQL> SELECT E1.EMPID, E1.EMPNAME, E2.DEPTID, SUM(E2.SALARY)
      2    FROM EMP E1, EMP E2
      3   WHERE E1.DEPTID = E2.DEPTID
      4     AND E1.EMPID >= E2.EMPID
      5   GROUP BY E1.EMPID, E1.EMPNAME, E2.DEPTID;     EMPID EMPNAME                  DEPTID SUM(E2.SALARY)
    ---------- -------------------- ---------- --------------
             1 Xie_Feng                      1           8000
             2 mantisXF                      1          11000
             3 Roger                         1          17000
             4 Tony                          1          19500
             5 Ning                          1          23300
             6 Sandip                        2           7000
             7 Akanksha                      2          12500
             8 Subhash                       2          173008 rows selected
    FYI:
    http://blog.csdn.net/mantisXF/archive/2008/07/28/2723787.aspx