继续一个新的案例..
开始的时候先感谢一下昨天的各位达人..
先膜拜一下.. -_-情况转为如下.
内容还是不少.长了请达人谅解.有72个电力公司提供供电
每个公司都有20天的过往记录.
每天有48个时段的用电量.
原表情况是 至少有72*48*20 那么多的记录 -_-以上所有内容都在一个表需要的是
建立一个新表统计过往20天每个公司 每个时段的平均用电量..在原表有几个关键的字段
TNI 代表电力公司 有72个不同的
DAY 代表日期 有20天
HH  代表一天的时段编号
VOLUME 那个时段特定的量 希望出来的结构
TNI           HH(时段)             volume(过往20日A时段平均用电量)
1公司       1公司时段1              XX
1公司       1公司时段2              XX
.
.
1公司       1公司时段48             xx
2公司       2公司时段1              xx
.
.
.
72间公司    72见公司时段1           xx
.
.
72间公司    72见公司时段48          xx
继续膜拜各位达人..
小弟不胜感激..

解决方案 »

  1.   


    select tni,hh,avg(volume) volume
    from table a
    where a.day>=trunc(sysdate)-20
    and a.day<=trunc(sysdate)+0.99999
    group by tni,hh
    其中a.day我这假设你是date型的
    如果varchar2型,比如20080301之类的
    就写成a.day>='20080301'
    如果是date型的,就要这样写
    a.day>=to_date('20080301','yyyymmdd')
    或者to_char(a.day,'yyyymmdd')>='20080301'
      

  2.   

    这个是最简单的分组算平均值的算法
    插入新表就用insert啊
    insert into 表名 (字段1,字段2,....)//如果不写具体字段,就是所有字段values(字段1的值,字段2的值,......)如果是从一个select 的结果集插入另一张表
    就用
    insert into  表名 (字段1,字段2,....)
    (select 值1,值2,......
    from 源表
    where 条件)
      

  3.   

    create table xx as select tni,hh,avg(volume) volume
    from table a
    where a.day>=trunc(sysdate)-20
    and a.day<=trunc(sysdate)+0.99999
    group by tni,hh这样就可以创建一个新表或者insert into xx as select tni,hh,avg(volume) volume
    from table a
    where a.day>=trunc(sysdate)-20
    and a.day<=trunc(sysdate)+0.99999
    group by tni,hh