1. 概述
1.1 問題描述
當我們希望在 FineReport 中根據數值區段對其進行等級劃分時,例如根據銷售員的銷量範圍,對銷售員劃分等級,如下表所示:
銷量範圍 | 等級 |
---|---|
2000以上 | A |
1900~2000 | B |
1800~1900 | C |
1700~1800 | D |
1600~1700 | E |
1500~1600 | F |
1500以下 | G |
通常的做法是寫 IF 公式一個一個範圍的判斷,導緻公式冗長,嵌套複雜。那如何能簡單快速的建立等級對應關系呢?
1.2 解決思路
利用内置數據集建立好範圍與等級對應關系,再利用 tablename.select() 公式來查詢。
2. 示例
2.1 數據準備
1)新建普通報表,新建數據庫查詢 ds1,SQL 查詢語句爲:SELECT 銷售員,sum(銷量) 銷量 FROM 銷量 group by 銷售員。
2)新建内置數據集「範圍劃分」,設計三個字段分别爲「最大值」、「最小值」和「等級」,設置表示範圍值的兩個列名的數據類型爲整數或小數,再将對應數值和等級增加到字段中。如下圖所示:
2.2 報表設計
1)将 ds1 中「銷售員」「銷量」數據列分别拖入 A2、B2 單元格,輸入對應标題,設計表格樣式如下圖所示:
2)選中 C2 單元格,單擊右鍵,選擇「單元格元素>插入公式」,公式爲: 範圍劃分.select(等級, B2 >= 最小值 && B2 < 最大值),即返回當前 B2 單元格在「範圍劃分」數據集中大於等於最小值并且小於最大值對應的等級。
2.3 效果預覽
2.3.1 PC 端
保存報表,點擊「分頁預覽」,效果如下圖所示:
2.3.2 移動端
App 端和 HTML5 端均支持,效果如下圖所示:
3. 模板下載
已完成模板可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\利用内置數據集實現範圍劃分.cpt
點擊下載模板:利用内置數據集實現範圍劃分.cpt