BEGIN DECLARE i INT; set i=1; while i<2666 DO IF (YEAR(date(now())-1)=2020 and MONTH(date(now())-1)=02) THEN INSERT INTO hisdata(analogid,datadate,vmax,minvalue,avgvalue) select analogid,date(now())-1,max(calvalue) ,min(calvalue) ,avg(calvalue) from hisanalog_2020_02 where date(savetime)=date(now())-1 and ANALOGID=i; ELSEIF (YEAR(date(now())-1)=2020 and MONTH(date(now())-1)=03) THEN INSERT INTO hisdata(analogid,datadate,vmax,minvalue,avgvalue) select analogid,date(now())-1,max(calvalue) ,min(calvalue) ,avg(calvalue) from hisanalog_2020_03 where date(savetime)=date(now())-1 and ANALOGID=i; ELSEIF (YEAR(date(now())-1)=2020 and MONTH(date(now())-1)=04) THEN INSERT INTO hisdata(analogid,datadate,vmax,minvalue,avgvalue) select analogid,date(now())-1,max(calvalue) ,min(calvalue) ,avg(calvalue) from hisanalog_2020_04 where date(savetime)=date(now())-1 and ANALOGID=i; end IF; set i=i+1; end WHILE; end 以上为一个存储过程的代码,结果输出是analogid为0,不是1开始的,导致无法筛选到可用数据!麻烦大神帮我看看有什么问题! analogid从1到2665,每天每个id有48行数据,通过此过程将每日数据进行简化汇总! |