oracle查詢出樹形結構的表,父節點數據是子節點的數據和

我們在查詢數據時,經常會想查詢出樹形結構的數據,父節點數據是子節點的數據和,如下圖:



通常會想到查出所有數據後臺構造,但是這種方式運行效率低且複雜

如何直接oracle直接查詢出數據傳到前臺?

1、建表


三要素:如我建的 fcode   主鍵           parent_id   父節點鍵值           fpath     路徑

left join MT_BDG_OUTLAYTYPE T14 on instr(','||T12.FPATH||',',','||T14.FCODE||',') >= 1

,通過instr(','||T12.FPATH||',',','||T14.FCODE||',') >= 1 來左連接此表

2、分組求和

...

sum(unit_amout) ...

group by ...



我的代碼:


select fcode as uuid,fcode as id,leaf,nvl(PARENT_ID,'0') as parentId,FPATH,fname from (
select  T14.FCODE,T14.FNAME,T14.PARENT_ID,nvl2(C11.PARENT_ID,'false','true') as leaf ,t12.FPATH,
sum(t11.unit_amount) as unit_amount,sum(t11.dept_amount) as dept_amount,
sum(t11.audit_amount) as audit_amount,to_char(min(to_number(t11.audit_state))) as AUDIT_STATE
 from mt_bdg_three t11
left join mt_bdg_outlaytype t12 on t12.FCODE=t11.funds_type
 left join MT_BDG_OUTLAYTYPE T14 on instr(','||T12.FPATH||',',','||T14.FCODE||',') >= 1
 left join (
        select distinct C11.PARENT_ID
        from MT_BDG_OUTLAYTYPE C11
    )C11 on C11.PARENT_ID = T14.FCODE 
    where t11.acc_type='1'
 group by T14.FCODE,T14.FNAME,T14.PARENT_ID,C11.PARENT_ID,t12.FPATH)

發佈了70 篇原創文章 · 獲贊 169 · 訪問量 31萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章