这样的数据  月    日  编号  仓库   进库日期   件数    重量
200901  01    1    K1    20090101     1      100
200901  02    1    K1    20090103     2      1000我要查询出这样的数据SELECT 月,日,编号,仓库,进库日期,SUM(件数),SUM(重量) FROM TABLE GROUP BY 月,日,编号,仓库,进库日期且按月进行分级汇总.用rollup要怎么写呢???????

解决方案 »

  1.   

    不知道rollup 这个关键字  查了一下 、Oracle ROLLUP和CUBE 用法     
          Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。如果是Group by  ROLLUP(A, B, C)的话,首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作。      如果是GROUP BY CUBE(A, B, C),则首先会对(A、B、C)进行GROUP BY,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),最后对全表进行GROUP BY操作。 grouping_id()可以美化效果。除了使用GROUPING函数,还可以使用GROUPING_ID来标识GROUP BY的结果。       也可以 Group by Rollup(A,(B,C)) ,Group by A Rollup(B,C),…… 这样任意按自己想要的形式结合统计数据,非常方便。 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/shanyin/archive/2009/10/08/4641823.aspx
      

  2.   

    是这个意思吗?
    SELECT 月,日,编号,仓库,进库日期,SUM(件数),SUM(重量) FROM TABLE GROUP BY rollup(月,日,编号,仓库,进库日期 )
      

  3.   

    这样吧?
    SELECT 月,日,编号,仓库,进库日期,SUM(件数),SUM(重量) FROM TABLE GROUP BY 月,日,编号,仓库,进库日期 
    union allSELECT 月,SUM(件数),SUM(重量) FROM TABLE GROUP BY rollup(月)
      

  4.   

    SELECT 月,日,编号,仓库,进库日期,SUM(件数),SUM(重量) FROM TABLE GROUP BY rollup(月,日,编号,仓库,进库日期 )
      

  5.   

    楼主这个需求有些不合适
    如果你想用rollup对月进行分组的话 那么除了两个SUM字段 其他字段该如何显示呢?
    举个例子说吧
    SQL> select * from test;     MONTH DAY NUM      STORE INTIME          QUANTITY     WEIGHT
    ---------- --- --- ---------- --------------- -------- ----------
             1   1   1          5 11-JAN-10              2        100
             1   2   2          5 11-JAN-10              3        100
             2   1   3          6 11-JAN-10              4        100
    SQL> select month,max(day),max(num),max(store),max(intime),sum(quantity) sum_qua
    ntity,sum(weight)
      2  sum_weight
      3  from test
      4  group by rollup(month)
      5  ;
         MONTH MAX(DAY) MAX(NUM) MAX(STORE) MAX(INTIME)     SUM_QUANTITY SUM_WEIGHT
    ---------- -------- -------- ---------- --------------- ------------ ----------
             1        2        2          5 11-JAN-10                  5        200
             2        1        3          6 11-JAN-10                  4        100
                      2        3          6 11-JAN-10                  9        300
    我这里为其他没有出现在rollup的字段加上了MAX函数 不然的话会提示错误不是一个分组语句
      

  6.   

    如果去掉那些不相关的字段 看起来就间接多了 如果那些字段可以不是用的话楼主可以参考下面的例子
    SQL> select month,sum(quantity) sum_quantity,sum(weight)
      2  sum_weight
      3  from test
      4  group by rollup(month)
      5  ;     MONTH SUM_QUANTITY SUM_WEIGHT
    ---------- ------------ ----------
             1            5        200
             2            4        100
                          9        300ROLLUP的使用参考下面链接
    http://blog.csdn.net/wh62592855/archive/2009/11/16/4817920.aspx