業務開發中動態匯出報表的一些思路

2021-08-08 06:33:02 字數 1179 閱讀 2725

最近在業務開發中,遇到了乙個動態匯出報表的問題,匯出來的報表的行和列都不是固定的,之前沒有做過這樣的東西,剛開始不知道怎麼去下手。

先說表是如何建的,剛開始有一種思路,就是每一列都建乙個字段,這樣的話就需要動態的去表裡邊加欄位,每次列有變化的時候,都要動態的去加一列,沒有使用這種方法。因為資料量不是很大,後來我就想每一行跟列對應加對應的值存到表中。

這樣存的方案是解決了,但是如何從資料庫裡邊取出來又成了問題,網上看了下別人的思路,有乙個sql感覺寫的還可以,復合我的需要,sql語句如下,

set @sql = null;

select

group_concat(distinct

concat(

'max(if(c.mode_name = ''',

c.mode_name,

''', c.total_money, 0)) as ''',

c.mode_name, ''''

)) into @sql

from d_sale_data c;

set @sql = concat('select c.area_name, ', @sql,

' from d_sale_data c

group by c.area_name');

prepare stmt from @sql;

execute stmt;

deallocate prepare stmt;

正常的方法一般是這樣的,

select user_name ,

max(case course when '數學' then score else 0 end ) 數學,

max(case course when '語文' then score else 0 end ) 語文,

max(case course when '英語' then score else 0 end ) 英語

from test_tb_grade

group by user_name;

但是在字段不確定的情況下這樣是不適用的,剛才的方法採用的是拼接字串的方式,執行完後可以解決問題,執行的結果如下,

開發中的一些規範

新建表 incid 自增id,當主鍵不是自增時,可加乙個自增id欄位用來排序 createtime 預設當前時間 createuser updatetime 建立時也需賦值 updateuser deleteflag bool 預設0 列表查新 多表查詢 需要多表查詢時,不要超過兩張表,需超過兩張表...

開發ReportViewer中遇到的一些問題

1.每頁顯示多少行由report的interactivesize height屬性決定,規則是 height 行數 0.63492 每行的高度 2.如何顯示表頭,選擇用xml格式開啟report檔案,在 after true 加上這句話就可以了。屬性裡找不到,只可以在這裡加 3.pagecountm...

關於一些iOS開發中容易忽略的一些屬性設定

ios 開發手記 ios私有方法 我們有時會遇到,希望某個類的方法不能被它的繼承類所繼承,這個時候我們就要用到私有方法,所謂的私有方法就是把方法不寫在標頭檔案.h裡面而是寫在.m中,這樣別人不能直接呼叫,例子如下。假設現有的類為myclass 在類的標頭檔案 為 inte ce myclass vo...