反饋已提交

網絡繁忙

擴展後多欄按先後排序

1. 概述

1.1 問題描述

資料集中我們可以用 SQL 語句中 order by A,B 語句,將結果先按照 A 排序,再按照 B 來排序。那麼設計器中如何使用「擴展後排序」實現多列排序呢?

例如:擴展後結果先按照「銷售員」排序,相同的銷售員再按照「銷量」排序,如下圖所示:

1.2 解決思路

1)字元類型的資料可以透過INARRAY(字元, SORTARRAY(UNIQUEARRAY(擴展的所有字元)))獲得排序位置。

2)數值類型的資料直接透過本身的大小排序。

將 1)和 2)的結果經過運算處理得出一個新的數值,最後按照新數進行排序。

2. 範例

2.1 準備資料

建立普通報表,建立資料庫查詢 ds1,輸入 SQL 語句:SELECT * FROM 銷量 where 地區='華北'

2.2 設計表格

1)將資料集中的欄位依次拖入 A2~E2 儲存格,表格如下圖所示:

2)將 A2 儲存格資料設定為「列表」,如下圖所示:

2.3 設定擴展後排序

選中 A2 儲存格,設定「擴展後排序」為「升冪」,輸入公式:INARRAY(B2,SORTARRAY(UNIQUEARRAY(B2[!0])))*POWER(10, LEN(MAX(E2[!0])))+E2

這個公式涉及到 B2 和 E2 儲存格的組合計算,正是這種組合計算實現了先 B2 排序,再 E2 排序的效果。公式拆解說明如下:

部分
說明
SORTARRAY(UNIQUEARRAY(B2[!0]))B2 儲存格是正文資料,所以要使用 SORTARRAY 函式對其進行排序
INARRAY(B2,SORTARRAY(UNIQUEARRAY(B2[!0])))

SORTARRAY 函式已經將 B2 排好序了,且資料儲存為陣列

再使用 INARRAY 函式匯出陣列裏面每個正文資料的位置

就是將排好序的正文轉化為數字,方便後面跟 E2 組合計算,再對 E2 排序

*POWER(10, LEN(MAX(E2[!0])))

這是個固定的乘冪,前面公式乘這個數,就是為了將代表正文位置的數字增大

為什麼要增大這個數呢?這是因為後面還要加上 E2,如果只是用1、2、3這樣比較小的數,加上 E2 後會影響到 B2 排序

+E2

B2 儲存格相同時,組內根據加上的 E2 儲存格數值,得到的和再進行組內排序

也就是在 B2 排好序的基礎上,再對 E2 排序

步驟如下圖所示:

2.4 效果預覽

1)PC 端

儲存報表,點選分頁預覽,效果如 1.1問題描述 中所示 。

2)行動端

App 和 HTML5 端均支援,效果如下圖所示:

3. 範本下載

已完成範本可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\OrderReport\擴展後多列排序.cpt

點選下載範本:擴展後多列排序.cpt


附件列表


主題: 報表專題
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

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

反馈已提交

网络繁忙