日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle树结构统计,ORACLE 递归树型结构统计汇总

發布時間:2025/3/11 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle树结构统计,ORACLE 递归树型结构统计汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

區域平臺統計報表,省--市--區 匯總,還有各級醫院,匯總與列表要在一個列表顯示。

用到ORACLE 會話時臨時表??GLOBAL TEMPORARY TABLE ? ??ON COMMIT PRESERVE ROWS;

遞歸樹:?START WITH P.PARENTORG = ‘ROOT‘

CONNECT BY PRIOR P.ORGCODE = P.PARENTORG;

WITH 連續嵌套

記錄一下便于查閱。

CREATE OR REPLACE PACKAGE BODY PKG_JXKH_SHXBB AS

PROCEDURE MJZGH(P_REPORTID IN VARCHAR2,

P_UNITID IN VARCHAR2,--要查詢的行政區劃

P_SDATE IN VARCHAR2,--要查詢的開始日期

P_EDATE IN VARCHAR2,--要查詢的開始日期

V_CUR OUT REFCURSORTYPE) IS

PRAGMA AUTONOMOUS_TRANSACTION;

P_sql VARCHAR2(4000);

BEGIN

P_sql := ‘CREATE GLOBAL TEMPORARY TABLE TMP_MZJZGH (

PARENTCODE VARCHAR2(60),

PARENTUNITID VARCHAR2(60),

PARENTUNITNAME VARCHAR2(60),

A NUMBER,

B NUMBER,

C NUMBER

) ON COMMIT PRESERVE ROWS‘;

--EXECUTE IMMEDIATE P_sql;

EXECUTE IMMEDIATE ‘TRUNCATE TABLE TMP_MZJZGH‘;

COMMIT;

INSERT INTO TMP_MZJZGH

(PARENTCODE,PARENTUNITID,PARENTUNITNAME)

SELECT P.PARENTORG,P.ORGCODE,P.MANAGERORGNAME

FROM PMR005_ORG P

WHERE P.BELONGTO < 3

AND P.STATUS = ‘1‘

START WITH P.PARENTORG = ‘ROOT‘

CONNECT BY PRIOR P.ORGCODE = P.PARENTORG;

FOR CUR IN (

WITH TMP AS (SELECT A.PARENTORG,

A.ORGCODE,

A.MANAGERORGNAME,

TT.*

FROM PMR005_ORG A,

(SELECT T.UNITID,

SUM(CASE

WHEN T.MetaDATAID = ‘MZ_JZXX_GHRC‘ THEN

T.MetaDATAVALUE

ELSE

0

END) SUMGHRC,

SUM(CASE

WHEN T.MetaDATAID = ‘MZ_FY_JZRC‘ THEN

T.MetaDATAVALUE

ELSE

0

END) SUMJZRC,

SUM(CASE

WHEN T.MetaDATAID = ‘MZ_JZXX_LGRC‘ THEN

T.MetaDATAVALUE

ELSE

0

END) SUMLGRC

FROM JXKH_MetaDTAVALUE T

WHERE T.MetaDATAID IN

(‘MZ_JZXX_GHRC‘,‘MZ_FY_JZRC‘,

‘MZ_JZXX_LGRC‘)

AND INSTR(P_UNITID,UNITID) > 0

AND T.STATDATE >

TO_DATE(P_SDATE,‘YYYY-MM-DD‘)

AND T.STATDATE <

TO_DATE(P_EDATE,‘YYYY-MM-DD‘)

GROUP BY T.UNITID) TT

WHERE A.ORGCODE = TT.UNITID

AND A.BELONGTO < 4),

TMP2 AS (SELECT P2.PARENTORG,

P2.ORGCODE,

P2.MANAGERORGNAME,

SUM(SUMGHRC) A,

SUM(SUMJZRC) B,

SUM(SUMLGRC) C

FROM PMR005_ORG P2,TMP

WHERE P2.PARENTORG =

(SELECT ORGCODE

FROM PMR005_ORG

WHERE PARENTORG =

‘ROOT‘)

AND (P2.ORGCODE =

TMP.ORGCODE AND

P2.ORGTYPE = ‘2‘)

GROUP BY P2.PARENTORG,

P2.MANAGERORGNAME

UNION

SELECT P3.PARENTORG,

P3.ORGCODE,

P3.MANAGERORGNAME,

SUM(SUMGHRC),

SUM(SUMJZRC),

SUM(SUMLGRC)

FROM TMP,PMR005_ORG P3

WHERE (P3.ORGCODE =

TMP.PARENTORG OR

P3.ORGCODE =

TMP.ORGCODE)

AND P3.BELONGTO = ‘2‘

GROUP BY P3.PARENTORG,

P3.MANAGERORGNAME),

TMP3 AS (SELECT PARENTORG,

ORGCODE,

MANAGERORGNAME,

A,

B,

C

FROM TMP2

UNION

SELECT ‘ROOT‘,

‘14000000‘,

‘山西省‘,

SUM(A),

SUM(B),

SUM(C)

FROM TMP2

GROUP BY ‘ROOT‘,

‘山西省‘

UNION

SELECT P4.PARENTORG,

P4.ORGCODE,

P4.SHORTNAME,

SUM(TP.A),

SUM(TP.B),

SUM(TP.C)

FROM TMP2 TP,

PMR005_ORG P4

WHERE TP.PARENTORG =

P4.ORGCODE

AND P4.PARENTORG =

(SELECT ORGCODE

FROM PMR005_ORG

WHERE PARENTORG =

‘ROOT‘

AND ORGTYPE = ‘1‘)

GROUP BY P4.PARENTORG,

P4.SHORTNAME)

SELECT * FROM TMP3)

LOOP

UPDATE TMP_MZJZGH

SET A = CUR.A,B = CUR.B,C = CUR.C

WHERE PARENTCODE = CUR.PARENTORG

AND PARENTUNITID = CUR.ORGCODE

AND PARENTUNITNAME = CUR.MANAGERORGNAME;

END LOOP;

COMMIT;

OPEN V_CUR FOR

SELECT A.PARENTCODE,

A.PARENTUNITID,

A.PARENTUNITNAME,

A.A MZ_JZXX_GHRC,

A.B MZ_FY_JZRC,

A.C MZ_JZXX_LGRC

FROM TMP_MZJZGH A;

END;

END;

總結

以上是生活随笔為你收集整理的oracle树结构统计,ORACLE 递归树型结构统计汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。