数据表:
编号  设备名称  所在集团   使用单位  是否过期 类型  是否外送  计划时间
001     设备1     集团1     单位1      F       A      F        2011-7-1
002     设备2     集团1     单位2      F       B      F        2011-6-4
003     设备3     集团2     单位3      T       C      F        2011-5-3
004     设备4     集团1     单位1      F       A      T        2011-4-1我要得到这样的一组数据每个集团 的 每个单位  A类设备有多少    B类设备有多少   C类设备有多少  分组设计是多少  过期的多少  外送的多少就是要打印这样的一个表:单位数据  集团1______________   集团2
———— A   B  C 合计________A    B    C    合计
单位1    6   0  7  13 ———— 1   1   0     2
单位2    3   1  2  6  ————2    0    1    3
请指教,谢谢
       

解决方案 »

  1.   


    A/B/C分组用
    sum(case when ... then 1 else 0 end)
    ..
    ..
    ..
    group by 单位名称
      

  2.   

    我要统计 计划时间 在2011-8-1以前的数据
    该如何用一个sql语句实现呢
      

  3.   

    有2个group字段使用单位  和  集团
      

  4.   


    sum(case when ... then 1 else 0 end)
    ..
    ..
    ..
    from 
    where  计划时间 < to_date('2011-08-01','yyyy-mm-dd')
    group by 单位名称
      

  5.   

    得学会思考,大家已经说的这么明确了select
    sum(case when 类型='A' and 所在集团='集团1' then 1 else 0 end) "集团1--A类",
    sum(case when 类型='A' and 所在集团='集团1' then 1 else 0 end) "集团1--B类",
    sum(case when 类型='A' and 所在集团='集团1' then 1 else 0 end) "集团1--C类",
    sum(case when 所在集团='集团1' then 1 else 0 end) "集团1合计",
    sum(case when 类型='A' and 所在集团='集团2' then 1 else 0 end) "集团2--A类",
    sum(case when 类型='A' and 所在集团='集团2' then 1 else 0 end) "集团2--B类",
    sum(case when 类型='A' and 所在集团='集团2' then 1 else 0 end) "集团2--C类",
    sum(case when 所在集团='集团2' then 1 else 0 end) "集团2合计"
    from table_name
    where 计划时间 < to_date('2011-08-01','yyyy-mm-dd')
    group by 使用单位
    order by 使用单位
      

  6.   

    with t as 

      select '001' seq,'设备1' sb_name,'集团1' jituan,'单位1' units,'F' guoqi,'A' sbtype,'F' waisong,'20110701' playdate FROM DUAL union all
       select '002' seq,'设备2' sb_name,'集团1' jituan,'单位2' units,'F' guoqi,'B' sbtype,'F' waisong,'20110604' playdate FROM DUAL union all
        select '003' seq,'设备3' sb_name,'集团2' jituan,'单位3' units,'T' guoqi,'C' sbtype,'F' waisong,'20110405' playdate FROM DUAL union all
         select '004' seq,'设备4' sb_name,'集团1' jituan,'单位1' units,'F' guoqi,'A' sbtype,'T' waisong,'20110403' playdate FROM DUAL
    )
    SELECT 
    SEQ,SB_NAME,units,
    SUM(DECODE(SBTYPE,'A',1)) sum_a,
    sum(decode(sbtype,'B',1))sum_b,
    sum(decode(sbtype,'C',1))sum_c,
    sum(decode(GUOQI,'F',1))ok_f,
    sum(decode(guoqi,'t',1))ok_t
     FROM T
    GROUP BY SEQ,UNITS,sb_name;