1. 概述
1.1 應用場景
資料集中的排序是指透過 SQL 直接在資料庫查詢時排序。此方法效能最佳,但所有計算都必須要在資料庫中做,會導致 SQL 很複雜,難以維護,另外有些計算是無法用 SQL 完成的。因此建議僅使用 SQL 實現一些簡單的,單一的「升冪」或「降冪」。
本文將介紹在定義資料集時使用 SQL 語句可以設定的排序類型。
1.2 ORDER BY 關鍵字
ORDER BY 關鍵字用於對結果集按照一個列或者多個列進行排序。預設按照「升冪」進行排序,即 ASC 關鍵字;如果需要按照「降冪」排序,可以使用 DESC 關鍵字。
例如:
升冪:SELECT * FROM 銷量 order by 銷量
降冪:SELECT * FROM 銷量 order by 銷量 desc
2. 範例
2.1 升冪
建立普通報表,建立「資料庫查詢」,輸入 SQL 語句為:SELECT * FROM 銷量 order by 銷量
點選預覽,即可看到資料按「銷量」列升冪排序,如下圖所示:
2.2 降冪
建立普通報表,建立「資料庫查詢」,輸入 SQL 語句為:SELECT * FROM 銷量 order by 銷量 desc
點選預覽,即可看到資料按「銷量」列降冪排序,如下圖所示:
2.3 多列排序
建立普通報表,建立「資料庫查詢」,輸入 SQL 語句為:SELECT * FROM 銷量 order by 英文簡稱,銷量
點選預覽,即可看到資料先按「英文簡稱」列升冪排序,「銷量」列再按對應的「英文簡稱」升冪排序,如下圖所示:
2.4 動態排序
定義一個資料集參數,透過在標題新增「動態參數」實現點選標題動態排序。
2.4.1 資料準備
建立普通報表,建立資料庫查詢 ds1,SQL 查詢語句為:SELECT * FROM 銷量 where 地區='華北' order by 銷量 ${a}
定義了一個資料集參數 a,用來表示排序 asc 或 desc 。如下圖所示:
注:如果需要兩個欄位均設定動態參數,SQL 語句可修改為:SELECT * FROM 銷量 where 地區='華北' order by 銷量 ${a},銷售員 ${a}
2.4.2 設計報表
將資料集中的資料拖入表格,設定 A2 儲存格資料設定為「列表」,報表樣式如下圖所示:
2.4.3 新增動態參數
選中「銷量」標題所在 E1 儲存格,新增一個「超級連結>動態參數」,參數即為在 SQL 中設定的參數 a ,參數值輸入公式:if(a="desc","asc","desc")。
注:a 預設為 asc。
2.4.4 效果預覽
1)PC 端
儲存報表,點選「分頁預覽」,效果如下圖所示。
2)行動端
App 端和 HTML5 端均支援,效果如下圖所示:
3. 範本下載
已完成範本可參見:
%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\OrderReport\點擊標題動態排序.cpt
點選下載範本:點擊標題動態排序.cpt