小弟现在有一个疑惑,就是关于rollup汇总的问题我的SQL如下。
select comp_code,sum(to_number(FDI_DATA)) as FDI_DATA  from tbdimendata   where comp_code in (select dimvalue_code from tbdimenhiervalue  start with dimvalue_parentcode='D110005'  connect by prior dimvalue_code =  dimvalue_parentcode) group by rollup(comp_code)  (select dimvalue_code from tbdimenhiervalue  start with dimvalue_parentcode='D110005'  connect by prior dimvalue_code =  dimvalue_parentcode)返回('D001','D002'),
rollup按这两个单位进行汇总,但是,rollup是先汇('D001','D002'),再汇('D001'),再汇('D002')这样能没有什么方法能让我只汇('D001','D002')的结果集,而不再汇('D001'),('D002')这两个单位,请指教!

解决方案 »

  1.   

    那就不需要rollup,只需要
    select comp_code,sum(to_number(FDI_DATA)) as FDI_DATA from tbdimendata where comp_code in (select dimvalue_code from tbdimenhiervalue start with dimvalue_parentcode='D110005' connect by prior dimvalue_code = dimvalue_parentcode)
    不就可以么
      

  2.   

    我如果还想用。rollup汇呢。有没有什么好的办法。
      

  3.   

    主要是想提高汇总的效率,因为我的数据量很大,有可能一下子对comp_code下几个单位进行汇总,我试了一下,如果不用rollup两个单位能汇总出82条记录,但是如果用rollup汇出152条,但是如果去掉多余的,里面有我实际要的记录条数仅仅为11条就是我想要的。这才两个单位如果几十个单位的话会做很多无用功,而且效率很低。
      

  4.   

    主要就是想用rollup来精确要查询记录的个数。因为我的表间有关联,如果用rollup 能最大限度上提高查询的精度。
      

  5.   

    我主要是想将。rollup是先汇('D001','D002'),再汇('D001'),再汇('D002')这样能没有什么方法能让我只汇('D001','D002')的结果集,而不再汇('D001'),('D002')这两个单位汇出来是一个排列组合,我不想要排列组合,我只想要'D001','D002'全条件的这种情况,而且我不想仅用group by 因为在sql中我还加入了select dimvalue_code from tbdimenhiervalue  start with dimvalue_parentcode='D110005'  connect by prior dimvalue_code =  dimvalue_parentcode connect by prior, start with这样的条件关联,这些组合起来能让我直接查询到我想要的记录。但我不知道rollup有没有什么方面可以除去再汇('D001'),再汇('D002')这两种情况的语句或语法格式。
      

  6.   

    简单说,聚集函数group by colname可以得到按照colname分组后的统计结果,
    select colname,sum(colname2) from tab_name
    group by colname 但是如果需要分组的统计结果和总的统计结果,可以通过union all(union)得到
    select colname, sum(colname2) from tab_name
    group by colname
    union all /union
    select colname, sum(colname2) from tab_name
    或者使用分析函数得到
    select colname, sum(colname2) from tab_name
    group by rollup(colname)
    rollup的目的是实现多层次的汇总而楼主已经明确说明不需要多层次的汇总,只需要最终的汇总结果,那么不清楚楼主为什么需要rollup;也不清楚楼主完整的需求是什么
    能看见的就是楼主在问:rollup有没有去掉中间层次汇总结果的语句或者语法格式
    能回答的只有:没有
      

  7.   

    我也是从昨天才开始看的rollup我的目的是想要多层次汇总,只不过有一些汇总出来的数据我想过滤掉。比如我定义了一个层次
    1
      2 (下面有2-1,2-2)
      3
      4 (下面有4-1且4-1下有4-1-1 子节点)
    现在节点1,2,4,4-1都没有数,需要将4-1-1汇到4-1再将4-1汇到4,这样4和4-1就有数了。2和1也都是同理。
    但是我发现比如我汇时按根为1向下汇时,会出现一些多余的数据这给我接下来的操作带来很多不便,所以我想在再对他进行筛选.