select 
sum(decode(to_char(value_date,'d'),1,value)) 星期日,
sum(decode(to_char(value_date,'d'),2,value)) 星期一,
...
type_id from a
group by type_id

解决方案 »

  1.   

    楼上的不错,比我写的好一些。另问一下,查询出来的是type_id,若想能得到type,怎么样处理更简便。还有哪位大虾有高见?
      

  2.   

    type_id上面建立索引,在进行联合查询
      

  3.   

    select 
    sum(decode(to_char(a.value_date,'d'),1,value)) 星期日,
    sum(decode(to_char(a.value_date,'d'),2,value)) 星期一,
    ...
    a.type_id,b.type from a a, b b where a.type_id = b.type_id 
    group by a.type_id,b.type
      

  4.   

    select b.type,
    sum(decode(to_char(a.value_date,'d'),1,value)) 星期日,
    sum(decode(to_char(a.value_date,'d'),2,value)) 星期一,
    ...
    from a, b where a.type_id(+) = b.type_id
    group by a.type_id,b.type
    这样的话,可以统计所有类型的数据
      

  5.   

    beckhambobo(beckham):
    一个小小的问题:为什么在GROUP BY 中要包含a.type_id?当然这不影响结果。:)
      

  6.   

    弱水三千兄好久不见了,祝你新年快乐,工作顺利主要是a.type_id对应b.type不一定唯一(即不同type_id对应相同type),这个原因
      

  7.   

    两天没看,谢谢各位的高见了。再问一个问题,最后一起给分。(我再加100一起给)还是这两张表,我想统计出的结果是:需要统计出的报表结构是:
                              x       y      z      p
        日期      星期   |----------------------------------------------------------
          .         .    |    .       .      .      . 
    '2004-01-01' 星期四  |(value合计)
    '2004-01-02' 星期五  |    .       .      .      . 
    '2004-01-03' 星期六  |    .       .      .      . 
          .         .    |    .       .      .      . 
    统计的是:起始日期到终止日期的一段时期内每天的各类的合计值请各位大虾再提高见。
      

  8.   

    select a.value_date,to_char(a.value_date,'day') 星期,
    sum(decode(a.type_id,1,value)) x,
    sum(decode(a.type_id,2,value)) y,
    ...
    from a 
    group by a.value_date,to_char(a.value_date,'day');
      

  9.   

    to : snowy_howe(天下有雪)统计报表的结果,要是这段时期内每天都有一条记录,
    如果这一天没有值的话,就应该是0
      

  10.   

    查询出一段时期每一天的语句是:select to_char(to_date('2000-01-01','yyyy-mm-dd')+(rownum-1),'yyyy-mm-dd') 日期 from user_objects where rownum<367 and to_date('2000-01-01','yyyy-mm-dd')+(rownum-1)<to_date('2001-01-01','yyyy-mm-dd');