求高手回答!现在有一个表存有一年里每天的营业额,但是按月分组,现在要求用一个SQ实现,如下:用的oracle表结构:公司code(key) 管理code(key) 部门code 顾客code  日期(格式:YYYYMMDD) 交易额
111             0001            01       V001        20130101             1000 
111             0002            01       V001        20130201             20000 
111             0003            01       V001        20130212             2000 
111             0004            01       V001        20130201             200000
111             0005            01       V001        20130303             3000
111             0006            01       V001        20130305             5000 抽出结果:               一月   二月     三月
record1     1000   20000    3000 
record2     空值   2000     5000
record3     空值   200000   空值 
注:其实是要查找相同部门相同顾客每月的数据,但每个月的数据条数不一定,也有可能没有,没有就用空值……SQLOracle

解决方案 »

  1.   

    用cube吧,单SQL也能实现但会写的恨死板。
      

  2.   

    select 部门,顾客,sum(decode(to_char(日期,'MM'),'01',交易额,0)) 一月,
     sum(decode(to_char(日期,'MM'),'02',交易额,0)) 二月
    .......
    from ...
    group by 部门,顾客这里你前面说的空值以0替代
      

  3.   

    --sql
      with t1 as
       (select 部门code, 顾客code, substr(日期, 1, 6) 日期, sum(交易额) 交易额
          from t
         group by 部门code, 顾客code, substr(日期, 1, 6))
      select *
        from t1 pivot(sum(交易额) for 日期 in('201301' 一月份,
                                         '201302' 二月份,
                                         '201303' 三月份))