反饋已提交
網絡繁忙
資料集中我們可以用 SQL 語句中 order by A,B 語句,將結果先按照 A 排序,再按照 B 來排序。那麼設計器中如何使用「擴展後排序」實現多列排序呢?
例如:擴展後結果先按照「銷售員」排序,相同的銷售員再按照「銷量」排序,如下圖所示:
1)字元類型的資料可以透過INARRAY(字元, SORTARRAY(UNIQUEARRAY(擴展的所有字元)))獲得排序位置。
2)數值類型的資料直接透過本身的大小排序。
將 1)和 2)的結果經過運算處理得出一個新的數值,最後按照新數進行排序。
建立普通報表,建立資料庫查詢 ds1,輸入 SQL 語句:SELECT * FROM 銷量 where 地區='華北'
1)將資料集中的欄位依次拖入 A2~E2 儲存格,表格如下圖所示:
2)將 A2 儲存格資料設定為「列表」,如下圖所示:
選中 A2 儲存格,設定「擴展後排序」為「升冪」,輸入公式:INARRAY(B2,SORTARRAY(UNIQUEARRAY(B2[!0])))*POWER(10, LEN(MAX(E2[!0])))+E2
這個公式涉及到 B2 和 E2 儲存格的組合計算,正是這種組合計算實現了先 B2 排序,再 E2 排序的效果。公式拆解說明如下:
SORTARRAY 函式已經將 B2 排好序了,且資料儲存為陣列
再使用 INARRAY 函式匯出陣列裏面每個正文資料的位置
就是將排好序的正文轉化為數字,方便後面跟 E2 組合計算,再對 E2 排序
這是個固定的乘冪,前面公式乘這個數,就是為了將代表正文位置的數字增大
為什麼要增大這個數呢?這是因為後面還要加上 E2,如果只是用1、2、3這樣比較小的數,加上 E2 後會影響到 B2 排序
B2 儲存格相同時,組內根據加上的 E2 儲存格數值,得到的和再進行組內排序
也就是在 B2 排好序的基礎上,再對 E2 排序
步驟如下圖所示:
1)PC 端
儲存報表,點選分頁預覽,效果如 1.1問題描述 中所示 。
2)行動端
App 和 HTML5 端均支援,效果如下圖所示:
已完成範本可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\OrderReport\擴展後多列排序.cpt
點選下載範本:擴展後多列排序.cpt
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙