mysql自动计算脚本_mysql一次统计脚本

DELIMITER $$USE`indonesia`$$DROP PROCEDURE IF EXISTS`statisticalInvestigation`$$CREATE DEFINER=`root`@`%` PROCEDURE `statisticalInvestigation`(IN p_date VARCHAR(7))BEGIN

DECLARE v_date VARCHAR(7);DECLARE v_date2 VARCHAR(7);------------------------------------------------------------------------------------------------------------

DROP TABLE IF EXISTStmp_table;CREATE TEMPORARY TABLEtmp_table (

COL1VARCHAR(35),

COL2VARCHAR(35),

COL3VARCHAR(35),

COL4VARCHAR(1)

);INSERT INTOtmp_table(COL1, COL2, COL3)SELECT 'Electricity Meter quantity',CAST(COUNT(1) AS CHAR),'' FROMDA_BJ;INSERT INTOtmp_table(COL1, COL2, COL3)SELECT 'Purchased Electricity Meter quantity',CAST(COUNT(DISTINCT D.BJJH) AS CHAR),'' FROM DA_BJ D, ORDER_MASTER M WHERE D.BJJH =M.METERNO;INSERT INTOtmp_table(COL1, COL2, COL3)VALUES('','','');INSERT INTOtmp_table(COL1, COL2, COL3)VALUES('Date','Ele Meter purchase token Num','Ele Meter management token Num');--------------------------------------

SET v_date =p_date;WHILE v_date <= DATE_FORMAT(NOW(), '%Y-%m') DOINSERT INTO tmp_table(COL1,COL4) VALUES(v_date,'1');UPDATE tmp_table SET COL2 =(SELECT CAST(COUNT(t.token) AS CHAR) FROMORDER_TOKEN T, ORDER_MASTER MWHERE T.ORDERSID =M.ORDERSIDAND M.ORDER_TYPE IN ('01','23')AND M.ORDER_TYPE NOT IN ('15','16')AND M.RES_TYPE = '03'

AND DATE_FORMAT(M.op_time, '%Y-%m') =v_date

)WHERE COL1 = v_date AND COL4 = '1';UPDATE tmp_table SET COL3 =(SELECT CAST(COUNT(t.token) AS CHAR) FROMORDER_TOKEN T, ORDER_MASTER MWHERE T.ORDERSID =M.ORDERSIDAND M.ORDER_TYPE NOT IN ('01','23','15','16')AND M.RES_TYPE = '03'

AND DATE_FORMAT(M.op_time, '%Y-%m') =v_date

)WHERE COL1 = v_date AND COL4 = '1';SET v_date = DATE_FORMAT(DATE_ADD(DATE_FORMAT(CONCAT(v_date,'-01'), '%Y-%m-%d'), INTERVAL 1 MONTH), '%Y-%m');END WHILE;--------------------------------------

INSERT INTOtmp_table(COL1, COL2, COL3)VALUES('','','');INSERT INTOtmp_table(COL1, COL2, COL3)SELECT 'Water Meter quantity',CAST(COUNT(1) AS CHAR),'' FROMDA_SB;INSERT INTOtmp_table(COL1, COL2, COL3)SELECT 'Purchased Water Meter quantity',CAST(COUNT(DISTINCT D.SBJH) AS CHAR),'' FROM DA_SB D, ORDER_MASTER M WHERE D.SBJH =M.METERNO;INSERT INTOtmp_table(COL1, COL2, COL3)VALUES('','','');INSERT INTOtmp_table(COL1, COL2, COL3)VALUES('Date','Water Meter purchase token Num','Water Meter management token Num');--------------------------------------

SET v_date2 =p_date;WHILE v_date2 <= DATE_FORMAT(NOW(), '%Y-%m') DOINSERT INTO tmp_table(COL1,COL4) VALUES(v_date2,'2');UPDATE tmp_table SET COL2 =(SELECT CAST(COUNT(t.token) AS CHAR) FROMORDER_TOKEN T, ORDER_MASTER MWHERE T.ORDERSID =M.ORDERSIDAND M.ORDER_TYPE IN ('01','23')AND M.ORDER_TYPE NOT IN ('15','16')AND M.RES_TYPE = '02'

AND DATE_FORMAT(M.op_time, '%Y-%m') =v_date2

)WHERE COL1 = v_date2 AND COL4 = '2';UPDATE tmp_table SET COL3 =(SELECT CAST(COUNT(t.token) AS CHAR) FROMORDER_TOKEN T, ORDER_MASTER MWHERE T.ORDERSID =M.ORDERSIDAND M.ORDER_TYPE NOT IN ('01','23','15','16')AND M.RES_TYPE = '02'

AND DATE_FORMAT(M.op_time, '%Y-%m') =v_date2

)WHERE COL1 = v_date2 AND COL4 = '2';SET v_date2 = DATE_FORMAT(DATE_ADD(DATE_FORMAT(CONCAT(v_date2,'-01'), '%Y-%m-%d'), INTERVAL 1 MONTH), '%Y-%m');END WHILE;--------------------------------------

SELECT COL1,COL2,COL3 FROMtmp_table;END$$

DELIMITER ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值