表里存的有: 
charge_type 记录的是类别:比如:工伤、自费、公费 
presc_type 记录药的种类:比如:中成药、西药 
costs  记录的是每种药对应的金额
presc_no每条记录生成一条单子(开方数)。 
举例表里存有的数据: 
工伤   3 中成药  1152 
工伤   4 中成药  1124 
自费  5 草药    161 
自费  7 草药    142 
海专  8 中成药  244 
海专  10中成药  123 
职工  101 中成药  133.24 
职工  121中成药  144.8 
我想要的结果是这样的: 
职工---中成 开方数小计   费用小计
医保-中成   开放数小计   费用小计
自费中成    开放数小计   费用小计
最后一个总的汇总  开方数汇总 费用汇总

解决方案 »

  1.   

    这个,提供一下见表语句,和insert文吧
      

  2.   

    工伤  3 中成药  1152 
    工伤  4 中成药  1124 这里的第二列是 开方数啊?考虑 “开方数”如下sql:
    select 
    charge_type ||'_'||presc_type ,sum(costs) 费用小计  from table1
    group by charge_type ,presc_type 
    union all
     select 
    '最后一个总的汇总' ,sum(costs) 费用小计  from table1 
    ;
      

  3.   

    select 
    charge_type ||'_'||presc_type ,sum(presc_no) 开放数小计, sum(costs) 费用小计  from table1 
    group by charge_type ,presc_type 
    union all 
    select 
    '最后一个总的汇总',sum(presc_no) 开放数小计 ,sum(costs) 费用小计  from table1 
      

  4.   

    select
    decode(grouping(a),1,'最后一个总的汇总',a) ,sum("开放数小计"),sum("费用小计")from(
    select 
    charge_type ||'_'||presc_type a ,sum(presc_no) 开放数小计, sum(costs) 费用小计  from table1 
    group by charge_type ,presc_type 
    )
    group by rollup(a)
      

  5.   

    select charge_type||----||decode(presc_type,0,'中成药','草药'),count(presc_no)开方数小计,sum(costs)费用小计
    from table
    where.......
    union all
    select '汇总',count(presc_no)开方数合计,sum(costs)费用合计
    from table
    这样下面的汇总是所有的汇总
    我要汇总是:一个时间段的汇总
    现在的汇总是把所有的数据都汇总出来了
    现在的结果是 工伤---中成   开方数小计 23  费用合计 4900
               工伤---草药  开方数小计 100  费用合计 3000
               汇总          开方数合计 50000     费用合计60000
    我想统计一个时间段的汇总  谢谢!不太通
         
      

  6.   

    10楼那个已经很清晰了,如果需要加时间限制只需在table1后面加上where时间段条件