oracle数据库,pl/sql开发工具。我用group by rollup,对数据进行了“小计”,"合计",因为数据比较多,客户要求把“合计”显示到第一列,其他排序不变。各位,有什么办法么?我哭啊!

解决方案 »

  1.   

    很简单啊
    你把你rollup的语句我们假设为x,第一个字段也就是总计那列的字段假设为col
    举例:
    select * from (x) t
    order by decode(col,'总计',0,1)
      

  2.   

    group by rollup()
    结合grouping()来使用即可
      

  3.   

    我的开发语句是这样的:
    select nvl(d.col1,'总计'),
           case when d.col1 is null then '总计' else nvl(d.col2,'小计')end,
           sum(d.col3) 
    from tablea d
    group by rollup(d.col1,d.col2);我用group by rollup()和grouping()结合使用貌似不给力啊。给明确点吗?谢谢各位了。
      

  4.   

    用geniuswjt的办法不能完全满足,如果我有‘小计’‘合计’‘总计’,那该怎么弄呢?
    select nvl(d.col1,'总计'),
      case when d.col1 is null then '总计' else nvl(d.col2,'合计')end,
      case when d.col1 is null then '总计' 
           when d.col2 then '合计' else nvl(d.col3,'小计')end,
      sum(d.col4)  
    from tablea d
    group by rollup(d.col1,d.col2,d.col3);
      

  5.   

    是说我的一个SQL中实现了‘小计’‘合计’‘总计’,现在‘小计’‘合计’任然按规定显示,只需要把‘总计’那一行提到第一行显示,而不是简单的做汉字替换
    select nvl(d.col1,'总计'),
      case when d.col1 is null then '总计' else nvl(d.col2,'合计')end,
      case when d.col1 is null then '总计'  
      when d.col2 then '合计' else nvl(d.col3,'小计')end,
      sum(d.col4)   
    from tablea d
    group by rollup(d.col1,d.col2,d.col3)
    order by decode(d.col1,'总计',0,1);
    这个可以实现‘总计’显示到第一行,但是其他维度会不按规则显示的。
    不知道现在我描述清楚了没?;
      

  6.   

    --按两个字段分组统计行数,总计放第一行
    select case
             when grouping(indcode) = 1 and grouping(varcode) = 1 then
              '总计'
             when grouping(indcode) = 0 and grouping(varcode) = 1 then
              '小计'
             else
              ''
           end as 说明,
           indCode,
           varCode,
           count(indValue) as 行统计
      from hi_datavalue
     group by cube(indCode,varcode)--结果
    --表头:说明  indCode    varCode   行统计
    1 总计 450223
    2 VAR00000110 31903
    3 VAR00000179 69720
    4 VAR00000180 69720
    5 VAR00000181 69720
    6 VAR00000182 69720
    7 VAR00000183 69720
    8 VAR00000184 69720
    9 小计 I00000202 31903
    10 I00000202 VAR00000110 31903
    11 小计 I00000246 139440
    12 I00000246 VAR00000179 69720
    13 I00000246 VAR00000180 69720
    14 小计 I00000247 139440
    15 I00000247 VAR00000181 69720
    16 I00000247 VAR00000182 69720
    17 小计 I00000248 139440
    18 I00000248 VAR00000183 69720
    19 I00000248 VAR00000184 69720