• MySQL函数转储存(当前月数据同步)


      1 BEGIN
      2     declare a1 int default 0;#第一次循环的循环变量
      3     declare a2 int default 0;
      4     declare b1 int default 0;
      5     declare b2 int default 0;
      6     declare c1 int default 0;
      7     declare c2 int default 0;
      8     declare d1 int default 0;
      9     declare d2 int default 0;
     10     declare days int default 0;#当月的第几天
     11     declare ids3 varchar(50);
     12     declare ids varchar(32);
     13     declare ids1 varchar(32);
     14     declare ids2 varchar(32);
     15     declare workno1 varchar(32);
     16     declare name1 varchar(32);
     17     declare amount double default 0;
     18     declare description1 varchar(200);
     19     declare description2 varchar(200);
     20     declare description3 varchar(200);
     21     
     22     
     23     #清空表xhj_sale_zmm关于昨天的数据
     24     DELETE FROM xhj_sale_zmm1 WHERE types_time = '03';
     25     #删除缓存中存在的临时表
     26     drop table IF EXISTS tmpTable;
     27     drop table IF EXISTS ordermain1;
     28     drop table IF EXISTS ordermain2;
     29     
     30     # 创建临时表– 不存在则创建临时表
     31     create temporary table if not exists tmpTable 
     32         (
     33          #id varchar(50),
     34          #id bigint(32) unsigned NOT NULL auto_increment primary key,# 主键id
     35          ranking int,# 排名
     36          names1 varchar(32),# 销售员姓名
     37          number varchar(32),# 工号
     38          dept varchar(500),# 部门描述
     39          deptid varchar(50),# 部门id
     40          amounts double(32,0),# 金额
     41          types_dept varchar(32),# 部门类别
     42          type_time varchar(50)# 时间类别
     43          );
     44     #  使用前先清空临时表。
     45     truncate TABLE tmpTable;
     46     #创建临时表ordermain1并
     47     create temporary table ordermain1 SELECT id,description FROM t_zmm2 where (parentdepartid is null or parentdepartid = '') and status = '0';
     48     
     49     create temporary table ordermain2 (SELECT @rownum:=@rownum+1 AS rownum1, ordermain1.* FROM (SELECT @rownum:=0) r, ordermain1);
     50     #查询临时表的总行数
     51     select max(o.rownum1) into a1 from ordermain2 o;
     52     set a2 = 1;
     53     while(a2 <= a1) DO
     54         SELECT id,description into ids,description1 from ordermain2 where rownum1 = a2;
     55         if ids is not null and ids != '' then
     56             drop table IF EXISTS table1;
     57             drop table IF EXISTS table11;
     58             drop table IF EXISTS table2;
     59             drop table IF EXISTS table3;
     60             #创建临时表单1
     61             SELECT * into days from ((SELECT DAYOFMONTH(NOW())) as b);#查询当前是本月第几天;
     62             #判断是否为当月第一天
     63             if days = 1 then
     64                 create temporary table table1 SELECT u.realname,a.workno,sum((m.performance_amount * a.scale * 0.01)) as a,'03' as day,'01' as bumen FROM
     65                 xhj_sale_zmm3 a  LEFT JOIN xhj_sale_zmm1 m on a.oid=m.id LEFT JOIN t_zmm4 u on a.workno = u.username LEFT JOIN t_s_zmm5 o on u.id = o.user_id LEFT JOIN t_zmm2 d on o.org_id = d.id
     66                 where d.depart_order like CONCAT('%',ids,'%') and m.confirm_time between (select CONCAT( DATE_FORMAT((SELECT DATE_ADD(NOW(),INTERVAL -1 MONTH)), "%Y-%m"),'-01 00:00:00')) and (select CONCAT(DATE_SUB(curdate(),INTERVAL 1 DAY),' 23:59:59')) and 
     67                 m.order_time between (select CONCAT( DATE_FORMAT((SELECT DATE_ADD(NOW(),INTERVAL -1 MONTH)), "%Y-%m"),'-01 00:00:00')) and (select CONCAT(DATE_SUB(curdate(),INTERVAL 0 DAY),' 23:59:59')) and m.status not in  ('1','3') group by a.workno order by a DESC limit 10;
     68                 #添加名次
     69                 create temporary table table11 (SELECT @rownum:=@rownum+1 AS rownum11, table1.* FROM (SELECT @rownum:=0) r, table1);
     70                 #把得到的数据插入到临时表单中
     71                 #SELECT *,a2 as aa FROM table11;
     72                 INSERT INTO tmpTable(ranking,names1,number,dept,deptid,amounts,types_dept,type_time)
     73                 SELECT rownum11,realname,workno,description1,ids,a,bumen,day FROM table11;
     74             end if;
     75             if days != 1 then
     76                 create temporary table table1 SELECT u.realname,a.workno,sum((m.performance_amount * a.scale * 0.01)) as a,'03' as day,'01' as bumen FROM
     77                 xhj_sale_zmm3 a  LEFT JOIN xhj_sale_zmm1 m on a.oid=m.id LEFT JOIN t_zmm4 u on a.workno = u.username LEFT JOIN t_s_zmm5 o on u.id = o.user_id LEFT JOIN t_zmm2 d on o.org_id = d.id
     78                 where d.depart_order like CONCAT('%',ids,'%') and m.confirm_time between (select CONCAT( DATE_FORMAT(now(), "%Y-%m"),'-01 00:00:00')) and (select CONCAT(DATE_SUB(curdate(),INTERVAL 1 DAY),' 23:59:59')) and 
     79                 m.order_time between (select CONCAT( DATE_FORMAT(now(), "%Y-%m"),'-01 00:00:00')) and (select CONCAT(DATE_SUB(curdate(),INTERVAL 0 DAY),' 23:59:59')) and m.status not in  ('1','3') group by a.workno order by a DESC limit 10;
     80                 #添加名次
     81                 create temporary table table11 (SELECT @rownum:=@rownum+1 AS rownum11, table1.* FROM (SELECT @rownum:=0) r, table1);
     82                 #把得到的数据插入到临时表单中
     83                 #SELECT *,a2 as aa FROM table11;
     84                 INSERT INTO tmpTable(ranking,names1,number,dept,deptid,amounts,types_dept,type_time)
     85                 SELECT rownum11,realname,workno,description1,ids,a,bumen,day FROM table11;
     86             end if;
     87             #创建临时表table2---获取二级事业部门id
     88             create temporary table table2 SELECT id,description FROM t_zmm2 where LENGTH(depart_order) = 64 and fax is not null and fax != '' and status = '0' and depart_order like CONCAT('%',ids,'%');
     89             create temporary table table3 (SELECT @rownum:=@rownum+1 AS rownum, table2.* FROM (SELECT @rownum:=0) r, table2);
     90             select max(t.rownum) into b1 from table3 t;
     91             set b2 = 1;
     92             while(b2 <= b1) DO
     93                 drop table IF EXISTS table21;
     94                 drop table IF EXISTS table4;
     95                 drop table IF EXISTS table5;
     96                 drop table IF EXISTS table7;
     97                 SELECT id,description into ids1,description2 from table3 where rownum = b2;
     98                 #SELECT ids1;
     99                 if days = 1 then
    100                     create temporary table table7 SELECT u.realname,a.workno,sum((m.performance_amount * a.scale * 0.01)) as a,'03' as day,'02' as bumen FROM
    101                     xhj_sale_zmm3 a  LEFT JOIN xhj_sale_zmm1 m on a.oid=m.id LEFT JOIN t_zmm4 u on a.workno = u.username LEFT JOIN t_zmm5 o on u.id = o.user_id LEFT JOIN t_zmm2 d on o.org_id = d.id
    102                     where d.depart_order like CONCAT('%',ids1,'%') and m.confirm_time between (select CONCAT( DATE_FORMAT(now(), "%Y-%m"),'-01 00:00:00')) and (select CONCAT(DATE_SUB(curdate(),INTERVAL 1 DAY),' 23:59:59')) and
    103                     m.order_time between (select CONCAT( DATE_FORMAT((SELECT DATE_ADD(NOW(),INTERVAL -1 MONTH)), "%Y-%m"),'-01 00:00:00')) and (select CONCAT(DATE_SUB(curdate(),INTERVAL 0 DAY),' 23:59:59')) and m.status not in  ('1','3') group by a.workno order by a DESC limit 5;
    104                     #添加名次
    105                     create temporary table table21 (SELECT @rownum:=@rownum+1 AS rownum21, table7.* FROM (SELECT @rownum:=0) r, table7);
    106                     #把得到的数据插入到临时表单中
    107                     INSERT INTO tmpTable(ranking,names1,number,dept,deptid,amounts,types_dept,type_time)
    108                     SELECT rownum21,realname,workno,description2,ids1,a,bumen,day FROM table21;
    109                 end if;
    110                 if days != 1 then
    111                     create temporary table table7 SELECT u.realname,a.workno,sum((m.performance_amount * a.scale * 0.01)) as a,'03' as day,'02' as bumen FROM
    112                     xhj_sale_zmm3 a  LEFT JOIN xhj_sale_zmm1 m on a.oid=m.id LEFT JOIN t_zmm4 u on a.workno = u.username LEFT JOIN t_zmm5 o on u.id = o.user_id LEFT JOIN t_zmm2 d on o.org_id = d.id
    113                     where d.depart_order like CONCAT('%',ids1,'%') and m.confirm_time between (select CONCAT( DATE_FORMAT(now(), "%Y-%m"),'-01 00:00:00')) and (select CONCAT(DATE_SUB(curdate(),INTERVAL 1 DAY),' 23:59:59')) and
    114                     m.order_time between (select CONCAT( DATE_FORMAT(now(), "%Y-%m"),'-01 00:00:00')) and (select CONCAT(DATE_SUB(curdate(),INTERVAL 0 DAY),' 23:59:59')) and m.status not in  ('1','3') group by a.workno order by a DESC limit 5;
    115                     #添加名次
    116                     create temporary table table21 (SELECT @rownum:=@rownum+1 AS rownum21, table7.* FROM (SELECT @rownum:=0) r, table7);
    117                     #把得到的数据插入到临时表单中
    118                     INSERT INTO tmpTable(ranking,names1,number,dept,deptid,amounts,types_dept,type_time)
    119                     SELECT rownum21,realname,workno,description2,ids1,a,bumen,day FROM table21;
    120                 end if;
    121                 #创建临时表table5---获取三级部门id
    122                 create temporary table table4 SELECT id,description FROM t_zmm2 where LENGTH(depart_order) = 96 and status = '0' and depart_order like CONCAT('%',ids1,'%');
    123                 create temporary table table5 (SELECT @rownum:=@rownum+1 AS rownum3, table4.* FROM (SELECT @rownum:=0) r, table4);
    124                 select max(t2.rownum3) into c1 from table5 t2;
    125                 set c2 = 1;
    126                 while(c2 <= c1) DO
    127                     drop table IF EXISTS table31;
    128                     drop table IF EXISTS table6;
    129                     #得到三级部门前三名信息
    130                     if days = 1 then
    131                         SELECT id,description into ids2,description3 from table5 where rownum3 = c2;
    132                         create temporary table table6 SELECT u.realname,a.workno,sum((m.performance_amount * a.scale * 0.01)) as a,'03' as day,'03' as bumen FROM
    133                         xhj_sale_zmm3 a  LEFT JOIN xhj_sale_zmm1 m on a.oid=m.id LEFT JOIN t_zmm4 u on a.workno = u.username LEFT JOIN t_zmm5 o on u.id = o.user_id LEFT JOIN t_zmm2 d on o.org_id = d.id
    134                         where d.depart_order like CONCAT('%',ids2,'%') and m.confirm_time between (select CONCAT( DATE_FORMAT(now(), "%Y-%m"),'-01 00:00:00')) and (select CONCAT(DATE_SUB(curdate(),INTERVAL 1 DAY),' 23:59:59')) and
    135                         m.order_time between (select CONCAT( DATE_FORMAT((SELECT DATE_ADD(NOW(),INTERVAL -1 MONTH)), "%Y-%m"),'-01 00:00:00')) and (select CONCAT(DATE_SUB(curdate(),INTERVAL 0 DAY),' 23:59:59')) and m.status not in  ('1','3') group by a.workno order by a DESC limit 3;
    136                         #添加名次
    137                         create temporary table table31 (SELECT @rownum:=@rownum+1 AS rownum31, table6.* FROM (SELECT @rownum:=0) r, table6);
    138                         #把得到的数据插入到临时表单中
    139                         INSERT INTO tmpTable(ranking,names1,number,dept,deptid,amounts,types_dept,type_time)
    140                         SELECT rownum31,realname,workno,description3,ids2,a,bumen,day FROM table31;
    141 
    142                     end if;
    143                     if days != 1 then
    144                         SELECT id,description into ids2,description3 from table5 where rownum3 = c2;
    145                         create temporary table table6 SELECT u.realname,a.workno,sum((m.performance_amount * a.scale * 0.01)) as a,'03' as day,'03' as bumen FROM
    146                         xhj_sale_zmm3 a  LEFT JOIN xhj_sale_zmm1 m on a.oid=m.id LEFT JOIN t_zmm4 u on a.workno = u.username LEFT JOIN t_zmm5 o on u.id = o.user_id LEFT JOIN t_zmm2 d on o.org_id = d.id
    147                         where d.depart_order like CONCAT('%',ids2,'%') and m.confirm_time between (select CONCAT( DATE_FORMAT(now(), "%Y-%m"),'-01 00:00:00')) and (select CONCAT(DATE_SUB(curdate(),INTERVAL 1 DAY),' 23:59:59')) and
    148                         m.order_time between (select CONCAT( DATE_FORMAT(now(), "%Y-%m"),'-01 00:00:00')) and (select CONCAT(DATE_SUB(curdate(),INTERVAL 0 DAY),' 23:59:59')) and m.status not in  ('1','3') group by a.workno order by a DESC limit 3;
    149                         #添加名次
    150                         create temporary table table31 (SELECT @rownum:=@rownum+1 AS rownum31, table6.* FROM (SELECT @rownum:=0) r, table6);
    151                         #把得到的数据插入到临时表单中
    152                         INSERT INTO tmpTable(ranking,names1,number,dept,deptid,amounts,types_dept,type_time)
    153                         SELECT rownum31,realname,workno,description3,ids2,a,bumen,day FROM table31;
    154                     end if;
    155                     drop table IF EXISTS table31;
    156                     drop table IF EXISTS table6;
    157                     set c2 = c2 + 1;
    158                 end while;
    159                 drop table IF EXISTS table21;
    160                 drop table IF EXISTS table4;
    161                 drop table IF EXISTS table5;
    162                 drop table IF EXISTS table7;
    163                 set b2 = b2 + 1;
    164             end while;
    165             drop table IF EXISTS table1;
    166             drop table IF EXISTS table11;
    167             drop table IF EXISTS table2;
    168             drop table IF EXISTS table3;
    169         end if;
    170         set a2 = a2 + 1;
    171     end while;
    172     
    173     #删除缓存中存在的临时表
    174 
    175     INSERT INTO xhj_sale_zmm(ranking,name,number,dept,deptid,amount,types_dept,types_time)
    176     SELECT ranking,names1,number,dept,deptid,amounts,types_dept,type_time FROM tmpTable;
    177     SELECT * FROM xhj_sale_zmm;
    178     drop table IF EXISTS ordermain1;
    179     drop table IF EXISTS ordermain2;
    180     drop table IF EXISTS tmpTable;
    181 END
  • 相关阅读:
    IMP-00009: 导出文件异常结束
    Unknown collation: 'utf8mb4_unicode_ci'
    从 github 执行 git clone 一个大的项目时提示 error: RPC failed
    PHP 中获取当前时间[Datetime Now]
    wordpress 常用函数 checked(),selected(),disabled()
    github 有名的问题【ERROR: Permission to .git denied to user】
    SSH 基础
    mixed content 混合内容
    nginx gzip 模块配置
    markdown 书写表格
  • 原文地址:https://www.cnblogs.com/zmmfeng/p/10009028.html
Copyright © 2020-2023  润新知