1. 概述
1.1 需求描述
當報表的數據列比較多,但數據量不是很大時,采用動态分組可靈活呈現不同維度的數據。如下圖所示,當選擇不同參數值時,可展示對應維度分組的數據。
1.2 實現思路
參考數據集參數設置中參數爲空選擇全部的用法,用if語句實現動态列。
2. 操作步驟
2.1 準備數據
新建普通報表,新建數據集ds1,SQL 語句爲:
SELECT 地區 ${if(len(銷售員)=0,"",",銷售員")} ${if(len(産品類型)=0,"",",産品類型")} ${if(len(産品)=0,"",",産品")} ,sum(銷量) as 銷量彙總
FROM 銷量
where 1=1
${if(len(銷售員)==0,"","and 銷售員 in ('" +銷售員+ "')")}
${if(len(産品類型)==0,"","and 産品類型 in ('" +産品類型+ "')")}
${if(len(産品)==0,"","and 産品 in ('" +産品+ "')")}
group by 地區
${if(len(銷售員)=0,"",",銷售員")}
${if(len(産品類型)=0,"",",産品類型")}
${if(len(産品)=0,"",",産品")}
由於參數控件爲複選框,因此數據集中參數需用in語句
2.2 設計表格
如下圖設計表格,将字段拖入到對應單元格中:
注:由於設置了銷售員、産品類型、産品三列爲動态分組列,即參數爲空時,銷售員、産品類型、産品這三個字段不顯示,所以銷售員、産品類型、産品三個參數需先設置默認值(後期可删除默認值)。
2.3 添加參數控件
編輯參數面板,點擊右側控件設置上方的全部添加,生成參數控件,分别點擊銷售員、産品類型、産品參數框,選擇下拉複選框控件
2.4 添加參數框選項數據集
注:由於參數之間做了聯動,所以需要在數據集 SQL 中添加對應的參數過濾條件。
2.4.1 銷售員選項
新建數據集銷售員:SELECT distinct 銷售員 FROM 銷量,因爲銷售員是第一個參數,可以任意選擇,所以不需要聯動過濾(此處distinct關鍵字是爲了去重)
2.4.2 産品類型選項
新建數據集産品類型:SELECT distinct 産品類型 FROM 銷量 where 1=1 ${if(len(銷售員)==0,"","and 銷售員 in ('" +銷售員+ "')")},因爲産品類型需要根據銷售員的不同顯示相應的産品類型,所以需要設置銷售員過濾參數(此處distinct關鍵字是爲了去重)
2.4.3 産品選項
新建數據集産品:SELECT distinct 産品 FROM 銷量 where 1=1 ${if(len(銷售員)=0,"","and 銷售員 in ('"+銷售員+"')")} ${if(len(産品類型)=0,"","and 産品類型 in ('"+産品類型+"')")}因爲産品需要根據銷售員、産品類型的不同顯示相應的産品,所以需要設置銷售員、産品類型過濾參數(此處distinct關鍵字是爲了去重)
2.5 設置參數控件的數據字典
分别選擇銷售員、産品類型、産品下拉複選框,設置數據字典爲數據查詢,分别選擇對應的數據集(銷售員、産品類型、産品),設置返回值類型爲字符串,分隔符爲','(即單引号中間加一個逗号,此處分隔符的設置是爲了将所選的多個參數值分隔開,例:當銷售員選擇 孫林、張珊 時,返回值爲 孫林','張珊 )
注1:銷售員、産品類型控件的控件名必須跟産品類型、産品數據集中的參數名保持一緻才可以聯動。
注2:分隔符必須在英文半角狀态下輸入。
2.6 設置條件屬性
單元格 B2、C2、D2添加條件屬性:列寬爲0,公式條件爲:len($$$)=0,如下圖所示:
2.7 效果預覽
2.7.1 PC端預覽效果
保存模板,點擊分頁預覽,效果如下圖所示:
2.7.2 移動端預覽效果
移動端預覽模板,效果如下圖所示:
3. 模板下載
已完成模板可參見:%FR_HOME%\webroot\WEB-INF\reportlets\doc\primary\GroupReport\動态分組.cpt
點擊下載模板:動态分組.cpt