Query for HRMS supervisor hierarchy

I need to list all people in a given person's supervisor hierarchy. The following query returns me a person's direct manager and whether or not that person is an officer. I've tried using connect by to return all supervisors in the person's hierarchy but cannot get it working thus far. Any idea what I am doing wrong with the connect by?
SELECT papf.employee_number,
papf.person_id,
papf.full_name,
ppg.segment1 officer_flag,
NVL(spapf.full_name,'NONE') supervisor_name,
spapf.person_id,
spapf.email_address
FROM per_all_people_f papf,
per_all_assignments_f paaf,
pay_people_groups ppg,
per_all_people_f spapf
WHERE papf.person_id = :person_id
AND papf.person_id = paaf.person_id
AND SYSDATE BETWEEN papf.effective_start_date AND papf.effective_end_date
AND SYSDATE BETWEEN paaf.effective_start_date AND paaf.effective_end_date
AND SYSDATE BETWEEN spapf.effective_start_date(+) AND spapf.effective_end_date(+)
AND apps.xxx_person_type.is_employee(SYSDATE, papf.person_id) = 'TRUE'
AND paaf.assignment_type in ('E','C')
AND paaf.supervisor_id = spapf.person_id ( + )
AND paaf.people_group_id = ppg.people_group_id
AND paaf.primary_flag = 'Y'
--order by to_number(employee_number)
--CONNECT BY PRIOR paaf.supervisor_id = spapf.person_id
;

Thanks for the response.
I tried the following using a variety of employee numbers in the hierarchy, sysdate and level < 100. I got ORA-01436: CONNECT BY loop in user data and it seemed to think the reference to per_all_assignments_f to be the issue, but not sure.
What am I doing wrong?
SELECT papf.employee_number,
papf.person_id,
papf.full_name,
ppg.segment1 officer_flag, --executive flag for officers (Y is officer, N is not)
NVL(spapf.full_name,'NONE') supervisor_name,
spapf.person_id supv_person_id
FROM per_all_people_f papf,
per_all_people_f spapf,
per_all_assignments_f paaf,
pay_people_groups ppg
WHERE papf.person_id = paaf.person_id
AND :p_eff_date BETWEEN papf.effective_start_date AND papf.effective_end_date
AND :p_eff_date BETWEEN paaf.effective_start_date AND paaf.effective_end_date
AND :p_eff_date BETWEEN spapf.effective_start_date(+) AND spapf.effective_end_date(+)
AND xxx_person_type.is_employee(:p_eff_date, papf.person_id) = 'TRUE'
AND paaf.assignment_type in ('E','C')
AND paaf.supervisor_id = spapf.person_id (+)
AND paaf.people_group_id = ppg.people_group_id
AND paaf.primary_flag = 'Y'
START WITH papf.employee_number = :p_emp_num --emp num of employee or top level supervisor?
CONNECT BY PRIOR spapf.employee_number = papf.employee_number AND LEVEL < :p_level
ORDER BY 1 DESC
;

Similar Messages

  • Query for Supervisor Hierarchy for top most manager

    Hi,
    I have requirement where I have to start from one employee and move up to top-most supervisor of that employee:
    For example starting from Employee ABC and moving to supervisor3 through supervisor hierarachy.
    Employee ABC
    Supervisor1*
    Supervisor2*
    Supervisor3*
    Can anyone help me in constructing such query.
    Regards,
    Salman Ahmad

    The linked query is to find a loop in the Supervisor hierarchy top down.
    The SQL here will display the current supervisor hierarchy for a specified subordinate bottom to top.
    select level, rpad(' ',level*2)||paa.person_id, pap.first_name, pap.last_name
    from per_all_assignments_f paa
    join per_all_people_f pap
    on paa.person_id = pap.person_id
    and sysdate between pap.effective_start_date and pap.effective_end_date
    where sysdate between paa.effective_start_date and paa.effective_end_date
    start with paa.person_id = :PersonID
    connect by paa.person_id = prior paa.supervisor_id
    and sysdate between prior paa.effective_start_date and prior paa.effective_end_date;

  • Query to find supervisor_id hierarchy for a person

    Hi,
    I have a requirement, where i have to find the supervisor id hierarchy (bottom up) for a person. I am using below query to get it.
    SELECT LEVEL ,LPAD ( ' ', 7 (LEVEL-1)) || paaf.person_id AS person_id*
    FROM   per_all_assignments_f paaf
    WHERE sysdate between paaf.effective_start_date and paaf.effective_end_date
    START WITH paaf.person_id=2338
    CONNECT BY PRIOR paaf.supervisor_id  =  paaf.person_id
    Above query is returning the follwing results as i expected.
    1 2338
    2 2212
    3 2105
    Here, for 2338 supervisors is------> 2212 supervisor is -----------> 2105
    Now, my requirement is, for each person i have to find the direct reporteee list in separate column.
    for 2338, need to find direct reportees--------> for 2212, find direct reportees--------> for 2105, find direct reportees in separte column
    Note: I am developing a reporting to display the results like above.
    Any help is appreciated.
    Thanks in advance.

    Please use the below query it may help you get the employee & supervisor
    SELECT ROWNUM
    , pax.supervisor_id
    , pax.person_id
    , ppx.employee_number
    , mgx.employee_number supervisor_staff_number
    , REPLACE (ppx.full_name, '''', ' ') full_name
    , REPLACE (mgx.full_name, '''', ' ') supervisor_full_name
    , pj.NAME job_name
    , LEVEL
    FROM per_assignments_x pax
    , per_people_x ppx
    , per_people_x mgx
    , per_jobs pj
    WHERE ppx.person_id = pax.person_id
    AND ppx.current_employee_flag = 'Y'
    AND mgx.person_id = pax.supervisor_id
    AND pj.job_id = pax.job_id
    START WITH ppx.employee_number = :p_emp_num
    CONNECT BY NOCYCLE PRIOR mgx.employee_number = ppx.employee_number
    --ORDER BY   1 ASC;
    Sandeep Yaparla

  • Oracle HRMS Organization Hierarchy query

    Dear All,
    Could any one provide me Oracle HRMS Organization Hierarchy query, please find the attachment of navigation.
    and please find the following query i developed, here i am getting all hierarchies as per attachment.
    SELECT distinct pose.D_PARENT_NAME , pose.org_structure_version_id,pose.organization_id_parent,
        haou2.ORGANIZATION_ID PARENT_ID_ORG,
        pose.D_CHILD_NAME
    FROM   apps.per_organization_structures_v pos
           ,      apps.per_org_structure_versions  posv
           ,      apps.per_org_structure_elements_v  pose
           ,      apps.hr_all_organization_units   haou2
    WHERE  pos.name = 'PIC HR ORGANIZATION HIERARCHY'
    AND    pose.D_PARENT_NAME='CHAIRMAN'
    AND    pose.org_structure_version_id = posv.org_structure_version_id
    AND    posv.organization_structure_id = pos.organization_structure_id
    AND    haou2.organization_id = pose.organization_id_child
    and    pose.D_PARENT_NAME=nvl(:P_PARENT_NAME,pose.D_PARENT_NAME)
    and    pose.D_CHILD_NAME=nvl(:P_CHILD_NAME,pose.D_CHILD_NAME)
    and    sysdate between posv.DATE_FROM and nvl(posv.DATE_TO,sysdate)
    CONNECT BY PRIOR pose.organization_id_parent = pose.organization_id_child
    can any one help me on this??
    Thanks in advance..
    Best Regards

    Hi,
    Try the following query and adapt as required for your instance (I've used Vision instance):
    SELECT DISTINCT pose.d_parent_name,
      pose.organization_id_parent,
      pose.d_child_name,
      pose.organization_id_child
    FROM
      per_org_structure_elements_v pose,
      per_org_structure_versions posv,
      per_organization_structures pos
    WHERE pos.name                                       = 'Primary Reporting Hierarchy'
    AND posv.version_number                              = 1
    AND pos.business_group_id                            = 202
    AND posv.organization_structure_id                   = pos.organization_structure_id
    AND pose.org_structure_version_id                    = posv.org_structure_version_id
    AND pose.business_group_id                           = pos.business_group_id
    AND posv.business_group_id                           = pose.business_group_id
      START WITH pose.d_parent_name                      = 'Vision Operations'
      CONNECT BY NOCYCLE PRIOR pose.organization_id_child = pose.organization_id_parent
    ORDER BY pose.organization_id_parent,  pose.organization_id_child
    HTH,
    Regards,
    Rajen.
    P.S: Please mark response as Helpful/Correct (Answered) if it resolves or helps to resolve your issue. Thks.

  • Query for Cost Code in oracle HRMS

    Hello Exports,
    i am new in oacle hrms,
    So Can you please tell how to fetch cost code in oracle hrms r12 ( i need sql query for cost code )
    Thanks

    try the following (assignment costing as at today):
    select ppx.full_name
    ,ppx.employee_number
    ,pax.assignment_number
    ,pax.primary_flag
    ,pcax.proportion
    ,pcak.segment1
    ,pcak.segment2
    ,pcak.segment3
    ,pcak.segment4
    from per_assignments_x pax
    ,per_people_x ppx
    ,pay_cost_allocations_x pcax
    ,pay_cost_allocation_keyflex pcak
    where ppx.person_id = pax.person_id
    and pax.assignment_id = pcax.assignment_id
    and pcak.cost_allocation_keyflex_id = pcax.cost_allocation_keyflex_id

  • Problem when querying OLAP for Value based hierarchy

    Hi I have problem when querying OLAP for value based hierarchy , for level based dimension it work fine
    the strange part is if I only put one value, it will work perfectly
    for example if I put only 1 value for that value base hierarchy like CF_HIER::426362, then it will get the correct value for that id 426362
    but if I put multiple value to the list
    CF_HIER::426362
    CF_HIER::424470
    CF_HIER::429073
    CF_HIER::424230
    then only some value will come out correctly, some of them will be 0, I wonder why because if I query using each value, then it show correct value
    for multiple value usually only the top in hirarchy give correct value, but the leaf will give 0, but if I query only the leaf, the leaf will give correct value
    this problem only happen for my value based hierarchy, for the level based hierarchy it work fine both for each value or multiple value in the list
    this is the code how I guery
    ////the "elementIdList" is where the value is (CF_HIER::426362,CF_HIER::424470,CF_HIER::429073,CF_HIER::424230), if I only put single value in this list the query work fine, but if I put multiple value then some value give correct result, some will give 0
    String[] elementIdArr = new String[elementIdList.size()];
              int i = 0;
              for (Long elementId: elementIdList) {
                   String elementIdStr ="";
                   if (hierarchy instanceof MdmLevelHierarchy)
                        elementIdStr = hierarchy.getName()+dimension.getValueSeparationString()+
                                            level.getName()+dimension.getValueSeparationString()+
                                            level.getName()+"_"+elementId;
                   else
                        elementIdStr = hierarchy.getName()+dimension.getValueSeparationString()+
                                            elementId;
                   elementIdArr[i++] = elementIdStr;
              Source myList = dp.createListSource(elementIdArr);
              result = hierarchy.getSource().selectValues(myList);
         Source joinedSource = measure.getSource();
              joinedSource = joinedSource.join(result );
    is there any suggestion where I'm doing wrong?or is it different between querying value based hier with level based hier?
    thanks

    Hi I have problem when querying OLAP for value based hierarchy , for level based dimension it work fine
    the strange part is if I only put one value, it will work perfectly
    for example if I put only 1 value for that value base hierarchy like CF_HIER::426362, then it will get the correct value for that id 426362
    but if I put multiple value to the list
    CF_HIER::426362
    CF_HIER::424470
    CF_HIER::429073
    CF_HIER::424230
    then only some value will come out correctly, some of them will be 0, I wonder why because if I query using each value, then it show correct value
    for multiple value usually only the top in hirarchy give correct value, but the leaf will give 0, but if I query only the leaf, the leaf will give correct value
    this problem only happen for my value based hierarchy, for the level based hierarchy it work fine both for each value or multiple value in the list
    this is the code how I guery
    ////the "elementIdList" is where the value is (CF_HIER::426362,CF_HIER::424470,CF_HIER::429073,CF_HIER::424230), if I only put single value in this list the query work fine, but if I put multiple value then some value give correct result, some will give 0
    String[] elementIdArr = new String[elementIdList.size()];
              int i = 0;
              for (Long elementId: elementIdList) {
                   String elementIdStr ="";
                   if (hierarchy instanceof MdmLevelHierarchy)
                        elementIdStr = hierarchy.getName()+dimension.getValueSeparationString()+
                                            level.getName()+dimension.getValueSeparationString()+
                                            level.getName()+"_"+elementId;
                   else
                        elementIdStr = hierarchy.getName()+dimension.getValueSeparationString()+
                                            elementId;
                   elementIdArr[i++] = elementIdStr;
              Source myList = dp.createListSource(elementIdArr);
              result = hierarchy.getSource().selectValues(myList);
         Source joinedSource = measure.getSource();
              joinedSource = joinedSource.join(result );
    is there any suggestion where I'm doing wrong?or is it different between querying value based hier with level based hier?
    thanks

  • Where can you build/maintain the Supervisor Hierarchy table in HRMS?

    I am using SSHR for LOA and I receive the error "Unable to build the Supervisor Hierarchy, no person record exists with the person id 1109 as of sysdate." Obviously, a person in the hierarchy is terminated but where is the supervisor hierarchy table so I can change the person that is terminated? The terminated person with the assignment ID has a person type of ex-employee. So that works. But, I don't know if they have been cleared from the hierarchy table.
    Can anyone help?

    user11990615 wrote:
    I am using SSHR for LOA and I receive the error "Unable to build the Supervisor Hierarchy, no person record exists with the person id 1109 as of sysdate." Obviously, a person in the hierarchy is terminated but where is the supervisor hierarchy table so I can change the person that is terminated? The terminated person with the assignment ID has a person type of ex-employee. So that works. Bud.t, I don't know if they have been cleared from the hierarchy table.
    Can anyone help?As mentioned by the previous replies, there is no supervisor table in Oracle. The relationship is stored in the assignment table.
    If you have a specific problem ID, you can use the following SQL to give you the employee number, assignment number and effective dates of the current and future assignments that have this person assigned as a supervisor. (Note I have not tested the code, so there may be typing mistakes)
    select ppf.employee_number, assignment_number, paf.effective_start_date, paf.effective_end_date
    from per_all_people_f ppf
    , per_all_assignments_f paf
    where ppf.person_id = paf.person_id
    and paf.supervisor_id = 1109
    and paf.effective_end_date > sysdate
    You will then need to use your knowledge to determine the date that each of the assignment records should be corrected.
    Regards,
    Andy.

  • Need to write SQL query for hierarchy

    Hi Guys,
    I need help to write a query for the below scenario.
    I have one organization, under that I have many branches. when i provide input to query on last branch, i need to display all parents of that branch like below
    Organization   ---parent
      branch 1  ---child
         branch11
         branch 12
        branch 2   ---child
          branch 21
         branch 3 ----child
          branch 31
          branch 32
          branch 33
    here, when i provide input as branch 3, then I need to fetch results branch 2, branch 1 till organization.
    can any one help me on this.
    Thanks in advance!
    Regards,
    LKR

    Hi,
    Is this the same question as
    https://community.oracle.com/thread/2616828
    Please don't post the same question over and over.  Mark this thread as "Answered" right away, and continue in the other thread (if necessary; the other thread has answers.)

  • ATTN: SSHR Rollup 3 for HRMS FP.K Rup 5671710

    The SSHR Rollup 3 for HRMS FP.K Rup patch 5671710 has just been released today.
    This patch contains fixes for the following bugs:
    Bug 5612687 : ORACLE.APPS.FND.FRAMEWORK.OAEXCEPTION: FOR CHANGE MANAGER PROCESS.
    Bug 5590776 : POSITION DEFAULTING AND POSITION LOV NOT WORKING IN RFC NOTIFICATIONS
    Bug 5587674 : ONDEMAND:OHS: SEARCH IN SELFSERVICE HAS DUPLICATE VALUES FOR ASG
    Bug 5582127 : ESC:PROPOSED_SALARY_N CONTAINS 38 DIGITS AFTER DECIMAL FROM SSHR.
    Bug 5572041 : THIS PERSON IS NOT ELIGIBLE FOR THE ELEMENT ASSOCIATED WITH THIS ABSENCE TYPE.
    Bug 5522407 : EMPLOYEE'S RECORD OR ELIGIBILITY CHANGED ERROR WHEN ADDING EMERGENCY CONTACT.
    Bug 5515312 : SSHR SALARY CHANGES AUTOMATICALLY WHEN USING BACK BUTTONS.
    Bug 5501388 : ONDEMAND:CANNOT ENTER REQUIRED FIELDS FOR JAPAN HIRE PROCESS.
    Bug 5468591 : VOL TERM OF A MGR RESULTS IN INVALID ERROR MESSG -DUE TO SUB-ORD FUTURE ASSG CHG.
    Bug 5527923 : GENERIC ADDRESS STYLE IS BEING REPLACED IN SELF SERVICE CONTACTS FORM.
    Bug 5515814 : ONDEMAND:IN SSHR WHEN TERMING AND REHIRING AN EMP THE PARTY ID # IS NOT THE SAME.
    Bug 5508360 : CHANGE JOB FUNCTION POSITION QUERY RETURN ONLY 'ACTIVE' STATUS POSITIONS.
    Bug 5507401 : MANAGER SSHR HIRE APPLICANT GIVES NUMERIC OR VALUE ERROR WHEN ADDING SUPERVISOR.
    Bug 5328872 : WRONG EVENT PASSED TO FINALIZETRANSACTION CALLBACK FOR DELETE ACTION ON SFL.
    Bug 5138131 : DEFAULT VALUES IN EXTRA INFORMATION DFF IN SELF SERVICE NOT DISPLAYED
    Bug 5652542 : THE EMPLOYEE'S RECORD OR ELIGIBILITY STATUS HAS CHANGED ERROR.
    This patch requires additional prerequisite patches to have been successfully applied to your system before it can be applied. These prerequisite patches, as at the time that this patch was built, are listed below. Please check Oracle Metalink to determine if any of these have been superseded.
    11i.HR_PF.K.delta.1 - 11I.HR_PF.K RUP 1
    Regards,
    Greg

    We need to know the new codes which will be added and which if any will be replaced. We know those identified on the US Gov site but can Oracle Dev. provide the specifics in advance so we can update our Employment Applications etc to match Oracle HR definitions?
    Regards,
    Ed

  • IExpense Supervisor Hierarchy

    Hello all!
    Does anyone know of an existing report or some SQL that they have to view how the Supervisor hierarchy is setup for the iExpense approval workflow? (View Employees>More>Supervisor)
    We have had several issues where there ends up being a loop in the hierarchy but we have know way to currently find it except to go through each employee one by one and see who their supervisor is. If we could run a report to show this, it would help tremendously! We are also running into this issue with the requisition approval process as it uses the same employee/supervisor hierarchy.
    Thanks!
    Janel

    This query should give you who is the manager.
    select per.person_id
         ,per.business_group_id
         ,per.full_name
         ,pera.business_group_id
         ,pera.organization_id
         ,pera.position_id
         ,pera.d_position_id
         ,pera.job_id
         ,pera.d_job_id
         ,pera.supervisor_id
         ,(select per2.full_name from per_people_v per2 where per2.person_id = pera.supervisor_id) Manager_name
         from PER_PEOPLE_v per
                   ,per_Assignments_v pera
                   where per.person_id = pera.person_id
    let me know if this works.
    [email protected]

  • Error while executing a sql query for select

    HI All,
    ORA-01652: unable to extend temp segment by 128 in tablespace PSTEMP i'm getting this error while i'm executing the sql query for selecting the data.

    I am having 44GB of temp space, while executing the below query my temp space is getting full, Expert please let us know how the issue can be resolved..
    1. I dont want to increase the temp space
    2. I need to tune the query, please provide your recomendations.
    insert /*+APPEND*/ into CST_DSA.HIERARCHY_MISMATCHES
    (REPORT_NUM,REPORT_TYPE,REPORT_DESC,GAP,CARRIED_ITEMS,CARRIED_ITEM_TYPE,NO_OF_ROUTE_OF_CARRIED_ITEM,CARRIED_ITEM_ROUTE_NO,CARRIER_ITEMS,CARRIER_ITEM_TYPE,CARRIED_ITEM_PROTECTION_TYPE,SOURCE_SYSTEM)
    select
    REPORTNUMBER,REPORTTYPE,REPORTDESCRIPTION ,NULL,
    carried_items,carried_item_type,no_of_route_of_carried_item,carried_item_route_no,carrier_items,
    carrier_item_type,carried_item_protection_type,'PACS'
    from
    (select distinct
    c.REPORTNUMBER,c.REPORTTYPE,c.REPORTDESCRIPTION ,NULL,
    a.carried_items,a.carried_item_type,a.no_of_route_of_carried_item,a.carried_item_route_no,a.carrier_items,
    a.carrier_item_type,a.carried_item_protection_type,'PACS'
    from CST_ASIR.HIERARCHY_asir a,CST_DSA.M_PB_CIRCUIT_ROUTING b ,CST_DSA.REPORT_METADATA c
    where a.carrier_item_type in('Connection') and a.carried_item_type in('Service')
    AND a.carrier_items=b.mux
    and c.REPORTNUMBER=(case
    when a.carrier_item_type in ('ServicePackage','Service','Connection') then 10
    else 20
    end)
    and a.carrier_items not in (select carried_items from CST_ASIR.HIERARCHY_asir where carried_item_type in('Connection') ))A
    where not exists
    (select *
    from CST_DSA.HIERARCHY_MISMATCHES B where
    A.REPORTNUMBER=B.REPORT_NUM and
    A.REPORTTYPE=B.REPORT_TYPE and
    A.REPORTDESCRIPTION=B.REPORT_DESC and
    A.CARRIED_ITEMS=B.CARRIED_ITEMS and
    A.CARRIED_ITEM_TYPE=B.CARRIED_ITEM_TYPE and
    A.NO_OF_ROUTE_OF_CARRIED_ITEM=B.NO_OF_ROUTE_OF_CARRIED_ITEM and
    A.CARRIED_ITEM_ROUTE_NO=B.CARRIED_ITEM_ROUTE_NO and
    A.CARRIER_ITEMS=B.CARRIER_ITEMS and
    A.CARRIER_ITEM_TYPE=B.CARRIER_ITEM_TYPE and
    A.CARRIED_ITEM_PROTECTION_TYPE=B.CARRIED_ITEM_PROTECTION_TYPE
    AND B.SOURCE_SYSTEM='PACS'
    Explain Plan
    ==========
    Plan
    INSERT STATEMENT ALL_ROWSCost: 129 Bytes: 1,103 Cardinality: 1                                                        
         20 LOAD AS SELECT CST_DSA.HIERARCHY_MISMATCHES                                                   
              19 PX COORDINATOR                                              
                   18 PX SEND QC (RANDOM) PARALLEL_TO_SERIAL SYS.:TQ10002 :Q1002Cost: 129 Bytes: 1,103 Cardinality: 1                                         
                        17 NESTED LOOPS PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 129 Bytes: 1,103 Cardinality: 1                                    
                             15 HASH JOIN RIGHT ANTI NA PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 129 Bytes: 1,098 Cardinality: 1                               
                                  4 PX RECEIVE PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 63 Bytes: 359,283 Cardinality: 15,621                          
                                       3 PX SEND BROADCAST PARALLEL_TO_PARALLEL SYS.:TQ10001 :Q1001Cost: 63 Bytes: 359,283 Cardinality: 15,621                     
                                            2 PX BLOCK ITERATOR PARALLEL_COMBINED_WITH_CHILD :Q1001Cost: 63 Bytes: 359,283 Cardinality: 15,621                
                                                 1 MAT_VIEW ACCESS FULL MAT_VIEW PARALLEL_COMBINED_WITH_PARENT CST_ASIR.HIERARCHY :Q1001Cost: 63 Bytes: 359,283 Cardinality: 15,621           
                                  14 NESTED LOOPS ANTI PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 65 Bytes: 40,256,600 Cardinality: 37,448                          
                                       11 HASH JOIN PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 65 Bytes: 6,366,160 Cardinality: 37,448                     
                                            8 BUFFER SORT PARALLEL_COMBINED_WITH_CHILD :Q1002               
                                                 7 PX RECEIVE PARALLEL_COMBINED_WITH_PARENT :Q1002Cost: 1 Bytes: 214 Cardinality: 2           
                                                      6 PX SEND BROADCAST PARALLEL_FROM_SERIAL SYS.:TQ10000 Cost: 1 Bytes: 214 Cardinality: 2      
                                                           5 INDEX FULL SCAN INDEX CST_DSA.IDX$$_06EF0005 Cost: 1 Bytes: 214 Cardinality: 2
                                            10 PX BLOCK ITERATOR PARALLEL_COMBINED_WITH_CHILD :Q1002Cost: 63 Bytes: 2,359,224 Cardinality: 37,448                
                                                 9 MAT_VIEW ACCESS FULL MAT_VIEW PARALLEL_COMBINED_WITH_PARENT CST_ASIR.HIERARCHY :Q1002Cost: 63 Bytes: 2,359,224 Cardinality: 37,448           
                                       13 TABLE ACCESS BY INDEX ROWID TABLE PARALLEL_COMBINED_WITH_PARENT CST_DSA.HIERARCHY_MISMATCHES :Q1002Cost: 0 Bytes: 905 Cardinality: 1                     
                                            12 INDEX RANGE SCAN INDEX PARALLEL_COMBINED_WITH_PARENT SYS.HIERARCHY_MISMATCHES_IDX3 :Q1002Cost: 0 Cardinality: 1                
                             16 INDEX RANGE SCAN INDEX PARALLEL_COMBINED_WITH_PARENT CST_DSA.IDX$$_06EF0001 :Q1002Cost: 1 Bytes: 5 Cardinality: 1

  • Question/issue regarding querying for uncommited objects in Toplink...

    Hi, was hoping to get some insight into this problem we are encoutering…
    We have this scenario were we are creating a folder hierarchy (using Toplink)
    1. a parent folder is created
    2. child elements are created (in the same transaction as step 1),
    3. we need to lookup the parent folder and assign it as the parent
    of these child elements
    4. end the transaction and commit all data
    In our system we control access to objects by appending a filter to the selection criteria, so we end up with SQL like this example
    (The t2 stuff is the authorization lookup part of the query.) ;
    SELECT t0.ID, t0.CLASS_NAME, t0.DESCRIPTION, t0.EDITABLE,
    t0.DATE_MODIFIED, t0.DATE_CREATED,
    t0.MODIFIED_BY, t0.ACL_ID, t0.NAME, t0.CREATED_BY,
    t0.TYPE_ID, t0.WKSP_ID, t1.ID, t1.LINK_SRC_PATH,
    t1.ABSOLUTE_PATH, t1.MIME_TYPE, t1.FSIZE,
    t1.CONTENT_PATH, t1.PARENT_ID
    FROM XDOOBJECT t0, ALL_OBJECT_PRIVILEGES t2,
    ARCHIVEOBJECT t1
    WHERE ((((t1.ABSOLUTE_PATH = '/favorites/twatson2')
    AND ((t1.ID = t2.xdoobject_id)
    AND ((t2.user_id = 'twatson2')
    AND (bitand(t2.privilege, 2) = 2))))
    AND (t1.ID = t0.ID))
    AND (t0.CLASS_NAME = 'oracle.xdo.server.repository.model.Archivable'))
    When creating new objects we also create the authorization lookup record (which is inserted into a different table.) I can see all the objects are registered in the UOW identity map.
    Basically, the issue is that this scenario all occurs in a single transaction and when querying for the newly created parent folder, if the authorization filter is appended to the query, the parent is not found. If I remove the authorization filter then the parent is found correctly. Or if I break this up into separate transactions and commit after each insert, then the parent is found correctly.
    I use the conformResultsInUnitOfWork attribute on the queries.
    This is related to an earlier thread I have in this discussion forum;
    Nested UnitOfWork and reading newly created objects...
    Thanks for any help you can provide,
    -Tim

    Hi Doug, we add the authorization filter directly in the application code as the query is getting set up.
    Here are some code examples; 1) the first is the code to create new object in the system, followed by 2) the code to create a new authorization lookup record (which also uses the first code to do the actual Toplink insert), then 3) an example of a read query where the authorization filter is appended to the Expression and after that 4) several helper methods.
    I hope this is of some use as it's difficult to show the complete flow in a simple example.
    1)
    // create new object example
    public Object DataAccess.createObject(....
    Object result = null;
    boolean inTx = true;
    UnitOfWork uow = null;
    try
    SessionContext sc = mScm.getCurrentSessionContext();
    uow = TLTransactionManager.getActiveTransaction(sc.getUserId());
    if (uow == null)
    Session session = TLSessionFactory.getSession();
    uow = session.acquireUnitOfWork();
    inTx = false;
    Object oclone = (Object) uow.registerObject(object);
    uow.assignSequenceNumbers();
    if (oclone instanceof BaseObject)
    BaseObject boclone = (BaseObject)oclone;
    Date now = new Date();
    boclone.setCreated(now);
    boclone.setModified(now);
    boclone.setModifiedBy(sc.getUserId());
    boclone.setCreatedBy(sc.getUserId());
    uow.printRegisteredObjects();
    uow.validateObjectSpace();
    if (inTx == false) uow.commit();
    //just temp, see above
    if (true == authorizer.requiresCheck(oclone))
    authorizer.grantPrivilege(oclone);
    result = oclone;
    2)
    // Authorizer.grantPrivilege method
    public void grantPrivilege(Object object) throws DataAccessException
    if (requiresCheck(object) == false)
    throw new DataAccessException(
    "Object does not implement Securable interface.");
    Securable so = (Securable)object;
    ModulePrivilege[] privs = so.getDefinedPrivileges();
    BigInteger pmask = new BigInteger("0");
    for (int i = 0; i < privs.length; i++)
    BigInteger pv = PrivilegeManagerFactory.getPrivilegeValue(privs);
    pmask = pmask.add(pv);
    SessionContext sc = mScm.getCurrentSessionContext();
    // the authorization lookup record
    ObjectUserPrivilege oup = new ObjectUserPrivilege();
    oup.setAclId(so.getAclId());
    oup.setPrivileges(pmask);
    oup.setUserId(sc.getUserId());
    oup.setXdoObjectId(so.getId());
    try
    // this recurses back to the code snippet from above
    mDataAccess.createObject(oup, this);
    catch (DataAccessException dae) {
    Object[] args = {dae.getClass().toString(), dae.getMessage()};
    logger.severe(MessageFormat.format(EXCEPTION_MESSAGE, args));
    throw new DataAccessException("Failed to grant object privilege.", dae);
    3)
    // example Query code
    Object object = null;
    ExpressionBuilder eb = new ExpressionBuilder();
    Expression exp = eb.get(queryKeys[0]).equal(keyValues[0]);
    for (int i = 1; i < queryKeys.length; i++)
    exp = exp.and(eb.get(queryKeys[i]).equal(keyValues[i]));
    // check if need to add authorization filter
    if (authorizer.requiresCheck(domainClass) == true)
    // this is where the authorization filter is appended to query
    exp = exp.and(appendReadFilter());
    ReadObjectQuery query = new ReadObjectQuery(domainClass, exp);
    SessionContext sc = mScm.getCurrentSessionContext();
    if (TLTransactionManager.isInTransaction(sc.getUserId()))
    // part of a larger transaction scenario
    query.conformResultsInUnitOfWork();
    else
    // not part of a transaction
    query.refreshIdentityMapResult();
    query.cascadePrivateParts();
    Session session = getSession();
    object = session.executeQuery(query);
    4)
    // builds the authorzation filter
    private Expression appendReadFilter()
    ExpressionBuilder eb = new ExpressionBuilder();
    Expression exp1 = eb.getTable("ALL_OBJECT_PRIVILEGES").getField("xdoobject_id");
    Expression exp2 = eb.getTable("ALL_OBJECT_PRIVILEGES").getField("user_id");
    Expression exp3 = eb.getTable("ALL_OBJECT_PRIVILEGES").getField("privilege");
    Vector args = new Vector();
    args.add(READ_PRIVILEGE_VALUE);
    Expression exp4 =
    exp3.getFunctionWithArguments("bitand",args).equal(READ_PRIVILEGE_VALUE);
    SessionContext sc = mScm.getCurrentSessionContext();
    return eb.get("ID").equal(exp1).and(exp2.equal(sc.getUserId()).and(exp4));
    // helper to get Toplink Session
    private Session getSession() throws DataAccessException
    SessionContext sc = mScm.getCurrentSessionContext();
    Session session = TLTransactionManager.getActiveTransaction(sc.getUserId());
    if (session == null)
    session = TLSessionFactory.getSession();
    return session;
    // method of TLTransactionManager, provides easy access to TLSession
    // which handles Toplink Sessions and is a singleton
    public static UnitOfWork getActiveTransaction(String userId)
    throws DataAccessException
    TLSession tls = TLSession.getInstance();
    return tls.getTransaction(userId);
    // the TLSession method, returns the active transaction (UOW)
    // or null if none
    public UnitOfWork getTransaction(String uid) {
    UnitOfWork uow = null;
    UowWrapper uw = (UowWrapper)mTransactions.get(uid);
    if (uw != null) {
    uow = uw.getUow();
    return uow;
    Thanks!
    -Tim

  • MDX query for parent-child combination display

    Hi guys..
    I am really new to the Essbase technology.
    Could you please help me out with this one:
    is it possible to extract the data(for example the metadata of a outline)..eg:-
    The outline structure is as follows :
    A1
    A11
    A12
    A2
    A21
    A22
    I want a MDX query to display it as :
    A1 A11
    A1 A12
    A2 A21
    A2 A22
    I have tried various ways but couldnt come up with a query for this.
    Thanks in advance for all your help.

    Unfortunately MDX cannot do this. If you think about what you are asking for, you are essentially saying that you want to see members of the same dimension on different axis. Multi-dimensional queries can't do that (think about trying to do it with addin).
    A further limiation is that MDX is not robust enough to allow you to work the results into a single axis using a concatenation function because while there is a string-to-member function, there is no member-to-string function and concat requires a string as input.
    Other approaches would require MDX to support joins or subqueries, which it does not.
    As others have mentioned, to do what you want to do, you need outline extractor or something like that.
    *Fun fact - if you have OBIEE 11g, it can do reporting in Essbase with hierarchy members in hierarchy format or column format, which will give you the results you need.  That alone is good reason to start using OBIEE.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • Query with Cost Center Hierarchy giving incorrect results

    Hi All,
    I have a universe built based on BEx query on Cost Center cubes. When enabling hierarchy in BEx Query and building Web intelligence Report based on the universe, I get incorrect results.  The levels of the hierarchy is incorrect, many of the cost centers are missing etc. I checked the universe and confirmed that all levels of hierarchy are generated correctly. The Lov generated for these levels are correct and I see the complete hierarchy when using the BEx Variable in Universe for filtering.
    I tried the same query with Hierarchy disabled with a different universe and it is providing correct results. Not sure what I'm missing here. Any inputs regarding this is appreciated.
    Thanks & Regards,
    Sree

    Ingo, Thanks for your suggestion. Of course, I did update the Universe after any changes in the query. Tried different query setting related to hierarchy  to make it work, but didn't many any difference and I get consistently incorrect results.
    One thing what I wanted to confirm is, if there is any known bug in SP 2 Fix Pack 2.7 related to hierarchies. If not, it might be me doing some thing wrong  and I will look into in more detail.
    Thanks & Regards,
    Sree

  • Hierarchical + Analytical query for organizational unit parameters

    Hello gurus,
    I try for a couples of hour ago to make a query work as I would like.
    Our application need to store some parameters for our organization units. These organization units are typically organized in in an hierarchy manner: one top unit with many level of child units. The parameters are stored into another table with 1:1 relationship.
    For sake of visualisation, here is the data for the organization unit and parameter table in a more visual format:
    SQL> select * from organization_unit;
    UNIT_CODE  UNIT_NAME            PARENT_UNIT_CODE
    00000      Top level
    10         L2 unit #10          00000
    10-01      L3 unit #10-01       10
    10-02      L3 unit #10-02       10
    20         L2 unit #20          00000
    20-01      L3 unit #20-01       20
    20-02      L3 unit #20-02       20
    SQL>  select * from org_unit_parameters;
    UNIT_CODE  PARAM1               PARAM2               PARAM3               PARAM4
    00000      Default value        Default value        Default value        {null}
    10         {null}               Value from 10        Value from 10        {null}
    10-01      {null}               {null}               Value from 10-01     {null}
    10-02      {null}               {null}               {null}               Value from 10-02
    20         Value from 20        Value from 20        Value from 20        {null}
    20-01      {null}               Value from 20-01     {null}               {null}
    20-02      {null}               Value from 20-02     {null}               {null}The application will query the parameter table to get a parameter value for a given unit.
    The parameter resolution algorithm is rather simple: when querying a unit, the applicable parameter is the one defined at the requested level. If the parameter is not defined (null) at the requested level, the parameter value that must be returned is the next defined one in the parent hierarchy. In some rare cases, it can be null if a parameter is not defined anywhere from the requested level to top.
    I've made a query that seems to work when querying for one unit at a time. It use hierarchical operators (start with + connect by) with a bit of analytical functions. Here is a test & raw output example:
    SQL> WITH hierarchy
      2  AS
      3  (
      4    SELECT ou.unit_code,
      5         LEVEL            AS lvl
      6    FROM   organization_unit ou
      7    START WITH
      8      ou.unit_code = '20-01'
      9    CONNECT BY
    10      ou.unit_code = PRIOR ou.parent_unit_code
    11  )
    12  SELECT h.*,
    13       p.param1                                                        AS param1_raw,
    14       LAST_VALUE (p.param1 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param1_with_last,
    15       FIRST_VALUE(p.param1 IGNORE NULLS) OVER (ORDER BY h.lvl ASC)    AS param1_with_first,
    16       p.param2                                                        AS param2_raw,
    17       LAST_VALUE (p.param2 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param2_with_last,
    18       FIRST_VALUE(p.param2 IGNORE NULLS) OVER (ORDER BY h.lvl ASC)    AS param2_with_first,
    19       p.param3                                                        AS param3_raw,
    20       LAST_VALUE (p.param3 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param3_with_last,
    21       FIRST_VALUE(p.param3 IGNORE NULLS) OVER (ORDER BY h.lvl ASC)    AS param3_with_first,
    22       p.param4                                                        AS param4_raw,
    23       LAST_VALUE (p.param4 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param4_with_last,
    24       FIRST_VALUE(p.param4 IGNORE NULLS) OVER (ORDER BY h.lvl ASC)    AS param4_with_first
    25  FROM   hierarchy                                h
    26         LEFT JOIN org_unit_parameters         p
    27         ON h.unit_code = p.unit_code
    28  ORDER BY h.lvl DESC;
    UNIT_CODE   LVL PARAM1_RAW           PARAM1_WITH_LAST     PARAM1_WITH_FIRST    PARAM2_RAW           PARAM2_WITH_LAST     PARAM2_WITH_FIRST    PARAM3_RAW           PARAM3_WITH_LAST     PARAM3_WITH_FIRST    PARAM4_RAW           PARAM4_WITH_LAST     PARAM4_WITH_FIRST
    00000         3 Default value        Default value        Value from 20        Default value        Default value        Value from 20-01     Default value        Default value        Value from 20        {null}               {null}               {null}
    20            2 Value from 20        Value from 20        Value from 20        Value from 20        Value from 20        Value from 20-01     Value from 20        Value from 20        Value from 20        {null}               {null}               {null}
    20-01         1 {null}               Value from 20        {null}               Value from 20-01     Value from 20-01     Value from 20-01     {null}               Value from 20        {null}               {null}               {null}               {null}Seems pretty good, the upper parameters are well «propagated» down with LAST_VALUE function. But, I don't understand why the use of FIRST_VALUE and oppposite ordering doesn't give the same result. A little more playing with the last query for getting the final result for a given unit code:
    SQL> SELECT *
      2  FROM
      3  (
      4     WITH hierarchy
      5     AS
      6     (
      7        SELECT ou.unit_code,
      8               LEVEL            AS lvl
      9        FROM   organization_unit ou
    10        START WITH
    11           ou.unit_code = '20-01'
    12        CONNECT BY
    13           ou.unit_code = PRIOR ou.parent_unit_code
    14     )
    15     SELECT h.*,
    16            LAST_VALUE (p.param1 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param1,
    17            LAST_VALUE (p.param2 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param2,
    18            LAST_VALUE (p.param3 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param3,
    19            LAST_VALUE (p.param4 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param4
    20     FROM   hierarchy                                h
    21               LEFT JOIN org_unit_parameters         p
    22               ON h.unit_code = p.unit_code
    23     ORDER BY h.lvl
    24  )
    25  WHERE ROWNUM = 1;
    UNIT_CODE   LVL PARAM1               PARAM2               PARAM3               PARAM4
    20-01         1 Value from 20        Value from 20-01     Value from 20        {null}Works well!
    But, my ultimate goal is to create a view that resolve correctly all these parameters for each level of the organization with proper propagation rather then querying for each unit at a time. I played a bit, but without success. :( My current raw query is this one:
    SQL> WITH hierarchy
      2  AS
      3  (
      4     SELECT ou.unit_code,
      5            LPAD(' ',2*(LEVEL-1)) || ou.unit_code    AS tree,
      6            LEVEL                                    AS lvl
      7     FROM   organization_unit ou
      8     START WITH
      9        parent_unit_code IS NULL
    10     CONNECT BY
    11        PRIOR unit_code =  parent_unit_code
    12  )
    13  SELECT h.*,
    14         p.param1                                                        AS param1_raw,
    15         LAST_VALUE (p.param1 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param1_with_last,
    16         FIRST_VALUE(p.param1 IGNORE NULLS) OVER (ORDER BY h.lvl ASC)    AS param1_with_first,
    17         p.param2                                                        AS param2_raw,
    18         LAST_VALUE (p.param2 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param2_with_last,
    19         FIRST_VALUE(p.param2 IGNORE NULLS) OVER (ORDER BY h.lvl ASC)    AS param2_with_first,
    20         p.param3                                                        AS param3_raw,
    21         LAST_VALUE (p.param3 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param3_with_last,
    22         FIRST_VALUE(p.param3 IGNORE NULLS) OVER (ORDER BY h.lvl ASC)    AS param3_with_first,
    23         p.param4                                                        AS param4_raw,
    24         LAST_VALUE (p.param4 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param4_with_last,
    25         FIRST_VALUE(p.param4 IGNORE NULLS) OVER (ORDER BY h.lvl ASC)    AS param4_with_first
    26  FROM   hierarchy                          h
    27            LEFT JOIN org_unit_parameters   p
    28            ON h.unit_code = p.unit_code
    29  ORDER BY h.unit_code;
    UNIT_CODE  TREE        LVL PARAM1_RAW                PARAM1_WITH_LAST          PARAM1_WITH_FIRST      PARAM2_RAW                   PARAM2_WITH_LAST          PARAM2_WITH_FIRST         PARAM3_RAW                PARAM3_WITH_LAST          PARAM3_WITH_FIRST         PARAM4_RAW                PARAM4_WITH_LAST       PARAM4_WITH_FIRST
    00000      00000         1 Default value             Default value             Default value          Default value                Default value             Default value             Default value             Default value             Default value             {null}                    Value from 10-02       {null}
    10           10          2 {null}                    Value from 20             Default value          Value from 10                Value from 10             Default value             Value from 10             Value from 10             Default value             {null}                    Value from 10-02       {null}
    10-01          10-01     3 {null}                    {null}                    Default value          {null}                       Value from 20-02          Default value             Value from 10-01          Value from 10-01          Default value             {null}                    Value from 10-02       Value from 10-02
    10-02          10-02     3 {null}                    {null}                    Default value          {null}                       Value from 20-02          Default value             {null}                    Value from 10-01          Default value             Value from 10-02          Value from 10-02       Value from 10-02
    20           20          2 Value from 20             Value from 20             Default value          Value from 20                Value from 10             Default value             Value from 20             Value from 10             Default value             {null}                    Value from 10-02       {null}
    20-01          20-01     3 {null}                    {null}                    Default value          Value from 20-01             Value from 20-02          Default value             {null}                    Value from 10-01          Default value             {null}                    Value from 10-02       Value from 10-02
    20-02          20-02     3 {null}                    {null}                    Default value          Value from 20-02             Value from 20-02          Default value             {null}                    Value from 10-01          Default value             {null}                    Value from 10-02       Value from 10-02As you can see, it's not as I expected. I know there's something to do with a PARTITION BY clause, but don't know how.
    Is anyone knows how to solve my problem?
    Thanks
    Bruno
    For reproductibility purposes, here is the code to create sturcture and data:
    Here is the format of my tables and some samble data:
    CREATE TABLE organization_unit (
       unit_code         VARCHAR2(5 CHAR)   NOT NULL PRIMARY KEY,
       unit_name         VARCHAR2(100 CHAR) NOT NULL,
       parent_unit_code  VARCHAR2(5 CHAR)  
    CREATE TABLE org_unit_parameters (
       unit_code         VARCHAR2(5 CHAR)   NOT NULL PRIMARY KEY,
       param1            VARCHAR2(100 CHAR),
       param2            VARCHAR2(100 CHAR),
       param3            VARCHAR2(100 CHAR),
       param4            VARCHAR2(100 CHAR)
    -- Inserting data
    INSERT INTO organization_unit (unit_code, unit_name, parent_unit_code)
    VALUES ('00000', 'Top level', NULL);
    INSERT INTO organization_unit (unit_code, unit_name, parent_unit_code)
    VALUES ('10', 'L2 unit #10', '00000');
    INSERT INTO organization_unit (unit_code, unit_name, parent_unit_code)
    VALUES ('10-01', 'L3 unit #10-01', '10');
    INSERT INTO organization_unit (unit_code, unit_name, parent_unit_code)
    VALUES ('10-02', 'L3 unit #10-02', '10');
    INSERT INTO organization_unit (unit_code, unit_name, parent_unit_code)
    VALUES ('20', 'L2 unit #20', '00000');
    INSERT INTO organization_unit (unit_code, unit_name, parent_unit_code)
    VALUES ('20-01', 'L3 unit #20-01', '20');
    INSERT INTO organization_unit (unit_code, unit_name, parent_unit_code)
    VALUES ('20-02', 'L3 unit #20-02', '20');
    INSERT INTO ORG_UNIT_PARAMETERS (unit_code, param1, param2, param3)
    VALUES ('00000', 'Default value', 'Default value', 'Default value');
    INSERT INTO ORG_UNIT_PARAMETERS (unit_code, param2, param3)
    VALUES ('10', 'Value from 10', 'Value from 10');
    INSERT INTO ORG_UNIT_PARAMETERS (unit_code, param3)
    VALUES ('10-01', 'Value from 10-01');
    INSERT INTO ORG_UNIT_PARAMETERS (unit_code, param4)
    VALUES ('10-02', 'Value from 10-02');
    INSERT INTO ORG_UNIT_PARAMETERS (unit_code, param1, param2, param3)
    VALUES ('20', 'Value from 20', 'Value from 20', 'Value from 20');
    INSERT INTO ORG_UNIT_PARAMETERS (unit_code, param2)
    VALUES ('20-01', 'Value from 20-01');
    INSERT INTO ORG_UNIT_PARAMETERS (unit_code, param2)
    VALUES ('20-02', 'Value from 20-02');
    COMMIT;

    Now, I hoppe I got your reqs:
    WITH hierarchy AS (
                       SELECT  ou.unit_code,
                               LPAD(' ',2*(LEVEL-1)) || ou.unit_code    AS tree,
                               LEVEL                                    AS lvl,
                               param1                                   AS param1_raw,
                               param2                                   AS param2_raw,
                               param3                                   AS param3_raw,
                               param4                                   AS param4_raw,
                               SYS_CONNECT_BY_PATH(p.param1,'#') || '#' AS param1_path,
                               SYS_CONNECT_BY_PATH(p.param2,'#') || '#' AS param2_path,
                               SYS_CONNECT_BY_PATH(p.param3,'#') || '#' AS param3_path,
                               SYS_CONNECT_BY_PATH(p.param4,'#') || '#' AS param4_path
                         FROM  organization_unit ou LEFT JOIN org_unit_parameters p
                                 ON ou.unit_code = p.unit_code
                         START WITH parent_unit_code IS NULL
                         CONNECT BY PRIOR ou.unit_code =  parent_unit_code
    SELECT  unit_code,
            tree,
            lvl,
            param1_raw,
            REGEXP_SUBSTR(param1_path,'[^#]+',1,GREATEST(1,REGEXP_COUNT(param1_path,'[^#]+'))) AS param1_with_last,
            REGEXP_SUBSTR(param1_path,'[^#]+')                                                 AS param1_with_first,
            param2_raw,
            REGEXP_SUBSTR(param2_path,'[^#]+',1,GREATEST(1,REGEXP_COUNT(param2_path,'[^#]+'))) AS param2_with_last,
            REGEXP_SUBSTR(param2_path,'[^#]+')                                                 AS param2_with_first,
            param3_raw,
            REGEXP_SUBSTR(param3_path,'[^#]+',1,GREATEST(1,REGEXP_COUNT(param3_path,'[^#]+'))) AS param3_with_last,
            REGEXP_SUBSTR(param3_path,'[^#]+')                                                 AS param3_with_first,
            param4_raw,
            REGEXP_SUBSTR(param4_path,'[^#]+',1,GREATEST(1,REGEXP_COUNT(param4_path,'[^#]+'))) AS param4_with_last,
            REGEXP_SUBSTR(param4_path,'[^#]+')                                                 AS param4_with_first
      FROM  hierarchy
      ORDER BY unit_code
    UNIT_ TREE              LVL PARAM1_RAW       PARAM1_WITH_LAST PARAM1_WITH_FIRS PARAM2_RAW       PARAM2_WITH_LAST PARAM2_WITH_FIRS PARAM3_RAW       PARAM3_WITH_LAST PARAM3_WITH_FIRS PARAM4_RAW       PARAM4_WITH_LAST PARAM4_WITH_FIRS
    00000 00000               1 Default value    Default value    Default value    Default value    Default value    Default value    Default value    Default value    Default value
    10      10                2                  Default value    Default value    Value from 10    Value from 10    Default value    Value from 10    Value from 10    Default value
    10-01     10-01           3                  Default value    Default value                     Value from 10    Default value    Value from 10-01 Value from 10-01 Default value
    10-02     10-02           3                  Default value    Default value                     Value from 10    Default value                     Value from 10    Default value    Value from 10-02 Value from 10-02 Value from 10-02
    20      20                2 Value from 20    Value from 20    Default value    Value from 20    Value from 20    Default value    Value from 20    Value from 20    Default value
    20-01     20-01           3                  Value from 20    Default value    Value from 20-01 Value from 20-01 Default value                     Value from 20    Default value
    20-02     20-02           3                  Value from 20    Default value    Value from 20-02 Value from 20-02 Default value                     Value from 20    Default value
    7 rows selected.
    SQL>  SY.
    Edited by: Solomon Yakobson on Nov 12, 2010 10:09 AM

Maybe you are looking for

  • Freeze when writing large amount of data to iPod through USB

    I used to take backups of my PowerBook to my 60G iPod video. Backups are taken with tar in terminal directly to mounted iPod volume. Now, every time I try to write a big amount of data to iPod (from MacBook Pro), the whole system freezes (mouse curso

  • Can't Download QuickTimes in Safari 4.0.3

    I just upgraded Safari to 4.0.3 and now I can't download QuickTimes. Usually after they've fully loaded you can right-click and save to desktop or it has the drop down arrow on the right side of the play bar. After I upgraded it no longer has this op

  • Inputstream read method is blocking

    Hi, I have a problem when reading the inputstream from a gps device over bluetooth. I have a StreamConnection that opens an InputStream. From the inputstream I use the read(byte[]) method (se the code snippet below). I read the gps at regular interva

  • My phone keeps glitching on all my apps

    my phone keeps glitching and my charging process is messed up

  • ASA5505 and AD with security group

    Hello, i have configured ASA5505 with VPN and with AAA from Active Directory. How i can define Security Group? Now everyone from domain can connect to VPN tunnel. But i need specify users in Security Group in AD. regards Tomas