反饋已提交

網絡繁忙

資料集中的排序

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

4. 注意事項

4.1 MySQL 中文排序無效

如果 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後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙