反饋已提交
網絡繁忙
資料集中的排序是指透過 SQL 直接在資料庫查詢時排序。此方法效能最佳,但所有計算都必須要在資料庫中做,會導致 SQL 很複雜,難以維護,另外有些計算是無法用 SQL 完成的。因此建議僅使用 SQL 實現一些簡單的,單一的「升冪」或「降冪」。
本文將介紹在定義資料集時使用 SQL 語句可以設定的排序類型。
ORDER BY 關鍵字用於對結果集按照一個列或者多個列進行排序。預設按照「升冪」進行排序,即 ASC 關鍵字;如果需要按照「降冪」排序,可以使用 DESC 關鍵字。
例如:
升冪:SELECT * FROM 銷量 order by 銷量
降冪:SELECT * FROM 銷量 order by 銷量 desc
建立普通報表,建立「資料庫查詢」,輸入 SQL 語句為:SELECT * FROM 銷量 order by 銷量
點選預覽,即可看到資料按「銷量」列升冪排序,如下圖所示:
建立普通報表,建立「資料庫查詢」,輸入 SQL 語句為:SELECT * FROM 銷量 order by 銷量 desc
點選預覽,即可看到資料按「銷量」列降冪排序,如下圖所示:
建立普通報表,建立「資料庫查詢」,輸入 SQL 語句為:SELECT * FROM 銷量 order by 英文簡稱,銷量
點選預覽,即可看到資料先按「英文簡稱」列升冪排序,「銷量」列再按對應的「英文簡稱」升冪排序,如下圖所示:
定義一個資料集參數,透過在標題新增「動態參數」實現點選標題動態排序。
建立普通報表,建立資料庫查詢 ds1,SQL 查詢語句為:SELECT * FROM 銷量 where 地區='華北' order by 銷量 ${a}
定義了一個資料集參數 a,用來表示排序 asc 或 desc 。如下圖所示:
注:如果需要兩個欄位均設定動態參數,SQL 語句可修改為:SELECT * FROM 銷量 where 地區='華北' order by 銷量 ${a},銷售員 ${a}
將資料集中的資料拖入表格,設定 A2 儲存格資料設定為「列表」,報表樣式如下圖所示:
選中「銷量」標題所在 E1 儲存格,新增一個「超級連結>動態參數」,參數即為在 SQL 中設定的參數 a ,參數值輸入公式:if(a="desc","asc","desc")。
注:a 預設為 asc。
1)PC 端
儲存報表,點選「分頁預覽」,效果如下圖所示。
2)行動端
App 端和 HTML5 端均支援,效果如下圖所示:
已完成範本可參見:
%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\OrderReport\點擊標題動態排序.cpt
點選下載範本:點擊標題動態排序.cpt
如果 MySQL 資料庫無法實現按中文拼音首字母排序,需要看一下表欄位是否使用的是 UTF-8 編碼,如果使用的是 UTF-8 編碼,則需要使用 MySQL 的 convert 方法轉換成 GBK 編碼進行排序。且前提是 MySQL 安裝了 GBK 字元集,不然會報錯。
SQL 語句如下:
升冪:SELECT * FROM 銷量 order by convert(英文簡稱 using gbk)
降冪:SELECT * FROM 銷量 order by convert(英文簡稱 using gbk) desc
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙