Solved

levels for reporting

Posted on 2016-09-26
5
63 Views
Last Modified: 2016-11-21
Hi,
Below query gives below results:

select

*

from

(

Select

a.position_nbr,

a.REPORTS_TO,

a.POSITION_desc,

a.Position_level

ROW_NUMBER() OVER (PARTITION BY a.position_nbr ORDER BY a.EFFDT DESC) AS RN

from PS_POSITION_DATA a
)

where RN='1'


 

position_nbr reports_to   POSITION_desc Position_level

143               12                          CEO                                  CEO

038              143                        DIRECTOR                       DIR

0418             143                       ADVISOR                        ADV

114              143                       DG                                   DG

346              114                     Manager                          MAN

202              114                    Lead                                  LEAD

 

 

 
i want results like below so idea is start from level1 where position_level ='CEO ' and show who reports to CEO and then who reports to DG etc. Max level is 8

 

level1  level2 level3 level4 level5 level6 level7 level8  position_desc position_level

143                                                                                              CEO            CEO

          038                                                                                  DIRECTOR        DIR

          0418                                                                              ADVISOR         ADV

          114                                                                              DG              DG

                   346                                                                  Manager         MAN

                   202                                                                  Lead            LEAD
0
Comment
Question by:sam2929
5 Comments
 
LVL 24

Expert Comment

by:Pawan Kumar
ID: 41817063
Here is the complete code

;WITH CTE
AS 
(

	Select position_nbr , reports_to , POSITION_desc , Position_level, 0 Level
	From PS_POSITION_DATA  E Where E.REPORTS_TO = 'CEO'
    
	UNION ALL
    
	Select E.position_nbr, E.reports_to, c.Level + 1 ,  E.POSITION_desc , E.Position_level
	From PS_POSITION_DATA  E INNER JOIN CTE c on c.position_nbr = e.REPORTS_TO 

)
SELECT * FROM CTE H 
	 

Open in new window


Enjoy !!
0
 
LVL 22

Expert Comment

by:Helena Marková
ID: 41817277
Mybe you can try hierarchical query:
SELECT LPAD(' ',2*(LEVEL-1)) || to_char(position_nbr) lvl ,
        POSITION_desc, Position_level
    FROM PS_POSITION_DATA
    START WITH Position_level = 'CEO'
    CONNECT BY PRIOR position_nbr = reports_to NOCYCLE;

http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_10002.htm#SQLRF01702
0
 
LVL 37

Accepted Solution

by:
Geert Gruwez earned 500 total points
ID: 41817683
you can use sys_connect_by_path to display the hierarchy

select  position_nbr, REPORTS_TO, POSITION_desc, 
  level position_level, 
  sys_connect_by_path(position_desc, ' / ') reporting_chain
from PS_POSITION_DATA 
connect by prior position_nbr = reports_to 
start with POSITION_desc = 'CEO'

Open in new window

0
 

Author Comment

by:sam2929
ID: 41837728
pawan your code don't work
0
 
LVL 24

Expert Comment

by:Pawan Kumar
ID: 41857957
@Author - Can you post the error you r facing ?
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

I remember the day when someone asked me to create a user for an application developement. The user should be able to create views and materialized views and, so, I used the following syntax: (CODE) This way, I guessed, I would ensure that use…
From implementing a password expiration date, to datatype conversions and file export options, these are some useful settings I've found in Jasper Server.
Video by: Steve
Using examples as well as descriptions, step through each of the common simple join types, explaining differences in syntax, differences in expected outputs and showing how the queries run along with the actual outputs based upon a simple set of dem…
This videos aims to give the viewer a basic demonstration of how a user can query current session information by using the SYS_CONTEXT function

929 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now