SELECT LPAD(' ',(LEVEL*3*3) - 9)||ACCOUNT_NAME AS ACCOUNT_NAME,LEVEL,
ACCOUNT_CODE,ACCOUNT_NAME,PARENTS,ROOT
FROM
(
SELECT HEAD_ACC_ID ACCOUNT_CODE,HEAD_ACC_NAME ACCOUNT_NAME,NULL AS PARENTS,NULL AS ROOT FROM SETUP_HEADER_ACCOUNT
UNION
SELECT MAIN_ACC_ID ACCOUNT_CODE,MAIN_ACC_NAME ACCOUNT_NAME,
(SELECT HEAD_ACC_NAME FROM SETUP_HEADER_ACCOUNT SHA WHERE SHA.HEAD_ACC_ID = SMA.HEAD_ACC_ID) AS PARENTS ,
(SELECT HEAD_ACC_NAME FROM SETUP_HEADER_ACCOUNT SHA WHERE SHA.HEAD_ACC_ID = SMA.HEAD_ACC_ID) AS ROOT
FROM SETUP_MAIN_ACCOUNT SMA
UNION
SELECT SUB_ACC_ID ACCOUNT_CODE,SUB_ACC_NAME ACCOUNT_NAME,
(SELECT MAIN_ACC_NAME FROM SETUP_MAIN_ACCOUNT MA WHERE MA.MAIN_ACC_ID = SB.MAIN_ACC_ID)AS PARENTS ,
(SELECT HEAD_ACC_NAME FROM SETUP_HEADER_ACCOUNT HA WHERE HA.HEAD_ACC_ID = (SELECT HEAD_ACC_ID FROM SETUP_MAIN_ACCOUNT MA WHERE MA.MAIN_ACC_ID = SB.MAIN_ACC_ID))AS ROOT
FROM SETUP_SUB_ACCOUNT SB
UNION
SELECT LAST_ACC_ID ACCOUNT_CODE,LAST_ACC_NAME ACCOUNT_NAME,
(SELECT SUB_ACC_NAME FROM SETUP_SUB_ACCOUNT T WHERE T.SUB_ACC_ID = SLA.SUB_ACC_ID)PARENTS,
(SELECT HEAD_ACC_NAME FROM SETUP_HEADER_ACCOUNT K WHERE K.HEAD_ACC_ID = (SELECT HEAD_ACC_ID FROM SETUP_MAIN_ACCOUNT M WHERE M.MAIN_ACC_ID =(SELECT MAIN_ACC_ID FROM SETUP_SUB_ACCOUNT N WHERE N.SUB_ACC_ID = SLA.SUB_ACC_ID))) AS ROOT
FROM SETUP_LAST_ACCOUNT SLA
)START WITH PARENTS IS NULL CONNECT BY PRIOR ACCOUNT_NAME = PARENTS
ACCOUNT_CODE,ACCOUNT_NAME,PARENTS,ROOT
FROM
(
SELECT HEAD_ACC_ID ACCOUNT_CODE,HEAD_ACC_NAME ACCOUNT_NAME,NULL AS PARENTS,NULL AS ROOT FROM SETUP_HEADER_ACCOUNT
UNION
SELECT MAIN_ACC_ID ACCOUNT_CODE,MAIN_ACC_NAME ACCOUNT_NAME,
(SELECT HEAD_ACC_NAME FROM SETUP_HEADER_ACCOUNT SHA WHERE SHA.HEAD_ACC_ID = SMA.HEAD_ACC_ID) AS PARENTS ,
(SELECT HEAD_ACC_NAME FROM SETUP_HEADER_ACCOUNT SHA WHERE SHA.HEAD_ACC_ID = SMA.HEAD_ACC_ID) AS ROOT
FROM SETUP_MAIN_ACCOUNT SMA
UNION
SELECT SUB_ACC_ID ACCOUNT_CODE,SUB_ACC_NAME ACCOUNT_NAME,
(SELECT MAIN_ACC_NAME FROM SETUP_MAIN_ACCOUNT MA WHERE MA.MAIN_ACC_ID = SB.MAIN_ACC_ID)AS PARENTS ,
(SELECT HEAD_ACC_NAME FROM SETUP_HEADER_ACCOUNT HA WHERE HA.HEAD_ACC_ID = (SELECT HEAD_ACC_ID FROM SETUP_MAIN_ACCOUNT MA WHERE MA.MAIN_ACC_ID = SB.MAIN_ACC_ID))AS ROOT
FROM SETUP_SUB_ACCOUNT SB
UNION
SELECT LAST_ACC_ID ACCOUNT_CODE,LAST_ACC_NAME ACCOUNT_NAME,
(SELECT SUB_ACC_NAME FROM SETUP_SUB_ACCOUNT T WHERE T.SUB_ACC_ID = SLA.SUB_ACC_ID)PARENTS,
(SELECT HEAD_ACC_NAME FROM SETUP_HEADER_ACCOUNT K WHERE K.HEAD_ACC_ID = (SELECT HEAD_ACC_ID FROM SETUP_MAIN_ACCOUNT M WHERE M.MAIN_ACC_ID =(SELECT MAIN_ACC_ID FROM SETUP_SUB_ACCOUNT N WHERE N.SUB_ACC_ID = SLA.SUB_ACC_ID))) AS ROOT
FROM SETUP_LAST_ACCOUNT SLA
)START WITH PARENTS IS NULL CONNECT BY PRIOR ACCOUNT_NAME = PARENTS
IT WILL SHOW

No comments:
Post a Comment