反饋已提交
網絡繁忙
線上視頻學習請查看:層次座標。
如果公式很難理解,可以先學習層次座標的進階視頻,吃透公式的基本概念和使用方法:層次座標進階。
在學習了 層次座標 後,便可以將層次座標和公式函式結合,來進行動態格間運算,比如進行比較、佔比、環比、逐層累計、跨層累計、條件匯總等。
傳統報表工具,一般只提供同行內的格間運算和針對某組(或全體)的集合運算,會有如下幾種情況的不足:
跨行運算,如:引用上一行資料,典型應用就是做累計比和環比。
跨組運算,如:同期比等等,跨組則無能為力。
集合運算,只提供個別固定的函式,如:取第一名、算累計值等。
無法組合出通用集合運算,如:取第二名、算累計的乘積等。
某些帶條件的運算,如:統計同組資料中比當前數大的個數,也就是資料排名等。
FineReport 使用層次座標表達擴展儲存格的位置,很好地解決了以上動態格間運算的問題。
本文透過範例介紹如何使用層次座標書寫計算運算式來進行動態格間運算。
效果如下圖所示:
比較=本期應付金額-01月份的應付金額
將儲存格擴展出的每個值與第一個值進行比較,範例中為求差值。
佔比=本期應付金額/所有月份應付金額
計算儲存格擴展出的每個值在總量中佔據的比例。
計算每行資料與上一行資料的比率。
環比(發展速度)=本期應付金額/上期應付金額
建立資料集 ds1,資料庫查詢對話框中寫入 SQL 查詢語句:
SELECT STRFTIME('%m',訂購日期) AS 月份,應付金額
FROM 訂單
WHERE STRFTIME('%Y',訂購日期)='2011'
如下圖所示:
按照表格中的說明設計報表。
1)A1~E1 儲存格依次寫入欄位標題名:月份,應付金額,比較,佔比,環比。選中 A1~E1 儲存格,設定標題預定義樣式為 Head類型,如下圖所示:
2)將資料集中的資料列「月份」拖入到 A2 儲存格中,將資料集中的資料列「應付金額」拖入到 B2 儲存格中,並在「儲存格元素>資料設定」中對儲存格資料進行「匯總>求和」,如下圖所示:
3)在 C2 儲存格寫入公式 B2 - B2[A2:1],計算 B2 儲存格擴展出來的資料,每一行與第一行的差值,如下圖所示:
公式說明:公式解譯詳情參見:層次座標
4)在 D2 儲存格寫入公式B2 / SUM(B2[!0]),計算 B2 儲存格擴展出來的資料,每一行在總值中的佔比,如下圖所示:
公式說明:
傳回 B2 擴展出來的所有值,即3949.70,2293.65,2310.21,2116.69,1346.74,4780.93
詳情參見:層次座標常用公式
5)在 E2 儲存格寫入公式IF(&A2 > 1, B2 / B2[A2:-1], 0),計算 B2 儲存格擴展出來的資料,每一行與上一行的比率,如下圖所示:
B2[A2:-1]:傳回上一個月的應付金額
B2 / B2[A2:-1]:本月應付金額/上月應付金額
詳情參見本文 2.1 節。
App 與 HTML5 端效果相同,如下圖所示:
按照年份分組,計算每一年月份應付金額的累加
分組報表中,每一組資料逐行累計。
計算所有年月應付金額累加
分組報表中,所有資料逐行累計,跨組時接着上一組累計結果繼續累計。
對符合條件的資料進行匯總
SELECT STRFTIME('%Y',訂購日期) AS 年份,STRFTIME('%m',訂購日期) AS 月份,應付金額
WHERE STRFTIME('%Y',訂購日期) IN ('2010','2011')
1)逐層累計:C2 + D2[B2:-1]
2)跨層累計:IF(&B2 > 1, C2 + E2[B2:-1], C2 + E2[A2:-1,B2:!-1])
例如:2011年01月份 傳回的為 1 ;2010 年01月份 傳回的也為 1
比如:2010年1月 傳回0;2010 年 2 月傳回 1月份對應的 E2 的值 2837.94
詳情參見:層次座標
3)條件匯總:COUNT(C2[!0]{A2=$A2 && C2>2500})
公式解譯詳情參見:層次座標常用公式
$A2 獲取儲存格 A2 擴展後對應位置上的值
然後判斷 A2 是否和 A2 擴展出去的值相等
即判斷是否在同一年,由於需求為分年統計
取同時滿足在同一年內,且每月應付金額大於2500的金額
比如:2010 年傳回的數值為 2837.94、3596.13、2822.19、2580.17
詳情參見本文 3.1 節。
已完成範本可參見:%FR_HOME%\webroot\WEB-INF\reportlets\demotw\NewbieGuide\層次座標範例1.cpt
已完成範本可參見:%FR_HOME%\webroot\WEB-INF\reportlets\demotw\NewbieGuide\層次座標範例2.cpt
點選下載範本:層次座標範例1.cpt
點選下載範本:層次座標範例2.cpt
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙