不確定列報表sql的實現

2021-07-13 15:33:31 字數 1162 閱讀 3926

在給金融行業做報表時,經常會遇到乙個問題,就是按照月份進行報表統計,那麼對於月份不確定的列該如何統計呢?

思路如下:

1、在儲存過程中拼接sql

2、將儲存過程中的結果集放在乙個臨時表中

3、在程式中呼叫儲存過程和該錶,用resultset獲取列數和列名。

**如下:

label_pro_start:  -- 程式處理開始標籤

begin

/*增加報表臨時表tmp_payment_***

*/-- 1.如果臨時表存在則刪除

drop table if exists tmp_payment_***;

-- 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_*** as select v_fund_code  ,v_short_name as v_short_name, v_pay_method ,v_pay_full_name , 

v_recipient,

v_property ,

v_subject  ,',left(@ee,length(@ee)-1),' ,sum(n_amount) as totalmoney ,

n_total ,

v_type ,

v_imp_batchno,

c_mark,

c_check_state,

d_check_date,

(select

realname

from

user

where

id = v_check_user

) v_check_user

from 表名 where v_type=\'a2\' group by v_short_name ');

-- 4.執行查詢,插入報表資料到臨時表

prepare stmt2 from @qq;

execute stmt2;

end

動態列報表的製作

在資料資訊系統中,常常會看到這樣一類報表需求,它們往往格式簡單,一般為列表式明細報表,但是要顯示的列很多。而不同終端使用者在不同時刻關心的資料又不同,這樣就要求報表能夠讓他們隨心所欲的選擇要顯示的列,以便直觀地檢視資料。最終效果如下圖所示 那怎麼實現這種需求呢?多做幾個典型報表,根據使用者不同進行不...

動態列報表的製作

在資料資訊系統中,常常會看到這樣一類報表需求,它們往往格式簡單,一般為列表式明細報表,但是要顯示的列很多。而不同終端使用者在不同時刻關心的資料又不同,這樣就要求報表能夠讓他們隨心所欲的選擇要顯示的列,以便直觀地檢視資料。最終效果如下圖所示 動態列效果圖 那怎麼實現這種需求呢?多做幾個典型報表,根據使...

資料集中不確定資料列的報表製作

在專案中,經常會有根據不同的條件,選擇輸出不同的資料的需求。典型應用場景 在乙個工資查詢模組中,不同的角色的員工,有著不同的薪酬項,即資料列數不確定。問題 如何將資料集中不確定的資料列顯示在報表中 解決問題思路 首先 潤幹報表提供了ds1.colcount 函式,此函式的功能是求出資料集的總列數。其...