本帖最后由 zhangyanpucm 于 2013-11-25 22:36:31 编辑

解决方案 »

  1.   

    用to_char函数求出每一天是周几和当月第几周,然后用CASE WHEN行变列
      

  2.   

    --周报表
    select name,to_char(time,'yyyymm'),'第'||to_char(time,'w')||'周'
    ,sum(decode(to_char(time,'dy'),'星期一',money)) as 星期一
    ,sum(decode(to_char(time,'dy'),'星期二',money)) as 星期二
    ,sum(decode(to_char(time,'dy'),'星期三',money)) as 星期三
    ,sum(decode(to_char(time,'dy'),'星期四',money)) as 星期四
    ,sum(decode(to_char(time,'dy'),'星期五',money)) as 星期五
    ,sum(decode(to_char(time,'dy'),'星期六',money)) as 星期六
    ,sum(decode(to_char(time,'dy'),'星期日',money)) as 星期日
    ,sum(money)
     from tb group by name,to_char(time,'yyyymm'),to_char(time,'w')--月报表
     select name,to_char(time,'yyyymm')
     ,sum(decode(to_char(time,'w'),1,money)) as 第一周
     ,sum(decode(to_char(time,'w'),2,money)) as 第二周
     ,sum(decode(to_char(time,'w'),3,money)) as 第三周
     ,sum(decode(to_char(time,'w'),4,money)) as 第四周
     ,sum(decode(to_char(time,'w'),5,money)) as 第五周
     ,sum(money)
    from tb group by name,to_char(time,'yyyymm')