跪求大神指教!!
用的是oracle。初次接触存储过程   快死了
根据编号的不同 按编号把每天电流想加,每天还的判断当天是不是这个月的最后一天,如果是当月最后一天,按编号把这个月的电流数据想加,判断当天是不是这一年的最后一天,按编号把这一年的电流数据想加编号      时间                 电流 父编号  标识位
100001 2016/7/11 13:02 0.1 1000 0
100001 2016/7/11 13:03 0.1 1000 0
100001 2016/7/11 13:04 0.1 1000 0
100001 2016/7/11 13:05 0.1 1000 0
100001 2016/7/11 13:06 0.1 1000 0
100001 2016/7/11 13:07 0.1 1000 0
100001 2016/7/11 13:08 0.1 1000 0
100001 2016/7/11 13:09 0.1 1000 0
100001 2016/7/11 13:10 0.1 1000 0
100001 2016/7/11 13:11 0.1 1000 0
100001 2016/7/11 13:12 0.1 1000 0
100001 2016/7/11 13:13 0.1 1000 0
100001 2016/7/11 13:14 4.8 1000 0
100001 2016/7/11 13:15 5 1000 0
100001 2016/7/11 13:16 6.5 1000 0
100001 2016/7/11 13:17 6.4 1000 0
100001 2016/7/11 13:18 6 1000 0
100001 2016/7/11 13:19 6 1000 0
100001 2016/7/11 13:20 6 1000 0
100002 2016/7/11 13:21 6 1000 0
100003 2016/7/11 13:22 5.6 1000 0
100004 2016/7/11 13:23 5.8 1000 0
100005 2016/7/11 13:24 5.6 1000 0
100006 2016/7/11 13:25 5.6 1000 0
100006 2016/7/11 13:26 5.6 1000 0
100006 2016/7/11 13:27 5.6 1000 0
100006 2016/7/11 13:28 5.6 1000 0
100006 2016/7/11 13:29 0 1000 0
100006 2016/7/11 13:30 5.5 1000 0
100011 2016/7/11 13:31 5.5 1001 0
100011 2016/7/11 13:32 0 1001 0
100011 2016/7/11 13:33 5.5 1001 0
100021 2016/7/11 13:34 5.5 1002 0
100022 2016/7/11 13:35 5.5 1002 0

解决方案 »

  1.   

    select a.id,a.rq,a.dl,b.rq,b.dl,c.rq,c.dl from 
    (select id,to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy') rq,sum(dl) dl,'' fbh from tab
    group by id, to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy')) a
    left join 
    (select id,to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy-mm') rq,sum(dl) dl,max(to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy')) fbh from tab
    group by id, to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy-mm')) b
    on a.id=b.id and a.rq = substr(b.rq,1,4)
    left join 
    (select id,to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy-mm-dd') rq,sum(dl) dl,max(to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy-mm')) fbh from tab
    group by id, to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy-mm-dd')) c
    on a.id=c.id and b.rq = substr(c.rq,1,7)
    order by id,a.rq,b.rq,c.rq
    不知道是不是你想要的结果
    编号:id        时间:sj                 电流:dl   父编号:fbh    标识位:flag
      

  2.   

    select a.id,a.rq,a.dl,b.rq,b.dl,c.rq,c.dl from 
    (select id,to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy') rq,sum(dl) dl,'' fbh from tab
    group by id, to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy')) a
    left join 
    (select id,to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy-mm') rq,sum(dl) dl,max(to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy')) fbh from tab
    group by id, to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy-mm')) b
    on a.id=b.id and a.rq = substr(b.rq,1,4)
    left join 
    (select id,to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy-mm-dd') rq,sum(dl) dl,max(to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy-mm')) fbh from tab
    group by id, to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy-mm-dd')) c
    on a.id=c.id and b.rq = substr(c.rq,1,7)
    order by id,a.rq,b.rq,c.rq
    不知道是不是你想要的结果
    编号:id        时间:sj                 电流:dl   父编号:fbh    标识位:flag
    额  我是需要写个存储过程 不是sql啊 现在统计的数据是要往数据库插入的 
      

  3.   

    select a.id,a.rq,a.dl,b.rq,b.dl,c.rq,c.dl from 
    (select id,to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy') rq,sum(dl) dl,'' fbh from tab
    group by id, to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy')) a
    left join 
    (select id,to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy-mm') rq,sum(dl) dl,max(to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy')) fbh from tab
    group by id, to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy-mm')) b
    on a.id=b.id and a.rq = substr(b.rq,1,4)
    left join 
    (select id,to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy-mm-dd') rq,sum(dl) dl,max(to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy-mm')) fbh from tab
    group by id, to_char(to_date(sj,'yyyy-mm-dd hh24:mi'),'yyyy-mm-dd')) c
    on a.id=c.id and b.rq = substr(c.rq,1,7)
    order by id,a.rq,b.rq,c.rq
    不知道是不是你想要的结果
    编号:id        时间:sj                 电流:dl   父编号:fbh    标识位:flag
    额  我是需要写个存储过程 不是sql啊 现在统计的数据是要往数据库插入的 
    insert into table select ……
    自行百度~