溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現報表數據的動態層次鉆?。ㄒ唬?/h1>
發布時間:2020-08-10 15:07:03 來源:ITPUB博客 閱讀:196 作者:rqgxy 欄目:編程語言

在報表項目中有時會遇到進行動態層次鉆取的需求,這種報表的開發難度一般都較大。而潤乾報表的實現則相對簡便很多。下面就以《各級部門 KPI 報表》為例,講解潤乾報表(需要結合集算器實現)實現此類報表的過程。

《各級部門 KPI 報表》初始狀態如下圖:

如何實現報表數據的動態層次鉆?。ㄒ唬?>
</p>
<p>
當前節點是根節點“河北省”,要求報表顯示當前節點的下一級節點“地市”,以及匯總的 KPI 數值。Kpi 又分為普通指標和 VIP 指標兩類,共四項。當點擊“石家莊”進行鉆取的時候,要求顯示石家莊下一級(區縣)的 KPI 匯總指標,如下圖:
</p>
<p>
<img src=   A 1 =connect(“ora”) 2 =[“省”,“地市”,“區縣”,“營業部”]|to(4,13).(“架構”+string(~)) 3 =A1.query(“SELECT id,name FROM tree    START WITH id = ?    CONNECT BY NOCYCLE PRIOR pid = id order by id”,id) 4 =A3.derive(A2.m(#):title) 5 >level=A3.len() 6 >xtitle=A2.m(level+1) 7 =A1.query@x(“with leaf as( SELECT tree.id id,REGEXP_SUBSTR(SYS_CONNECT_BY_PATH(id, ‘;’),‘[^;]+’,1,2)x FROM tree where connect_by_isleaf=1 START WITH ID = ? CONNECT BY NOCYCLE PRIOR id = pid) select nvl(leaf.x,max(leaf.id)) id,’”+xtitle+“’ title,max(tree.name) name, sum(kpi.kpi1) kpi1,sum(kpi.kpi2) kpi2,sum(kpi.vipkpi1) vipkpi1,sum(kpi.vipkpi2) vipkpi2 from leaf left join kpi on leaf.id = kpi.id left join tree on leaf.x=tree.id group by x order by x”,id) 8 return A4,A7

A1:連接預先配置好的 oracle 數據庫。

A2:新建一個序列,內容是“省、地市、區縣、營業部、架構 4、架構 5、架構 6. . . 架構 13”。

A3:使用 oracle 數據庫提供的 connect by 語句編寫 sql,從數據庫中取出指定 id(節點編號)的所有父節點 id、name。id 是外部參數“當前節點”,如果傳進來的值是 104020,那么 A3 的計算結果是:

如何實現報表數據的動態層次鉆?。ㄒ唬?>
</p>
<p>
A4:為 A3 增加一個字段 title,按照順序,對應 A2 中的層級。結果是:
</p>
<p>
<img src=MySQL,PostgreSQL 及 Greenplum 等)就很難實現 A7 中的 SQL。那么有什么辦法可以讓這些數據庫也能實現上述復雜的樹形結構計算呢?

在后續的文章 《如何實現報表數據的動態層次鉆?。ǘ? 中,我們將介紹如何利用潤乾報表內置集算引擎的強大計算能力來解決這個問題。

詳情鏈接: http://c.raqsoft.com.cn/article/1554694583352?r=gxy


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女