在给金融行业做报表时,经常会遇到一个问题,就是按照月份进行报表统计,那么对于月份不确定的列该如何统计呢?
思路如下:
1、在存储过程中拼接sql
2、将存储过程中的结果集放在一个临时表中
3、在程序中调用存储过程和该表,用resultset获取列数和列名。
代码如下:
label_pro_start: -- 程序处理开始标签
BEGIN
/*
增加报表临时表TMP_PAYMENT_XXX
*/
-- 1.如果临时表存在则删除
DROP TABLE IF EXISTS TMP_PAYMENT_XXX;
-- 2.生成动态列名
SET @EE='';
SELECT @EE:=CONCAT(@EE,'SUM(IF(c_time=\'',c_time,'\'',',n_amount,0)) AS \'',c_time,'\',') FROM (SELECT DISTINCT c_time FROM 表名) A;
-- 3.拼接查询语句
SET @QQ=CONCAT('CREATE TABLE TMP_PAYMENT_xxx AS SELECT v_fund_code ,v_short_name AS v_short_name, v_pay_method ,v_pay_full_name ,