我們在查詢數據時,經常會想查詢出樹形結構的數據,父節點數據是子節點的數據和,如下圖:
通常會想到查出所有數據後臺構造,但是這種方式運行效率低且複雜
如何直接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)