SQL层次结构查询
此查询的输出:SQL层次结构查询,sql,database,oracle11g,Sql,Database,Oracle11g,此查询的输出: SELECT ppse.SUBORDINATE_POSITION_ID child_position_id ,ppse.PARENT_POSITION_ID manger_position_id ,b.person_id FROM per_pos_structure_elements_v ppse ,APPS.xxkpc_hr_personnel_v2_mv b WHERE b.position_id(+)
SELECT ppse.SUBORDINATE_POSITION_ID child_position_id
,ppse.PARENT_POSITION_ID manger_position_id
,b.person_id
FROM per_pos_structure_elements_v ppse
,APPS.xxkpc_hr_personnel_v2_mv b
WHERE b.position_id(+) = ppse.SUBORDINATE_POSITION_ID
AND ppse.POS_STRUCTURE_VERSION_ID =64
AND ppse.PARENT_POSITION_ID=12493
12493在第一个查询中是父查询,在第二个查询中是子查询,因此我需要删除所有第三列为空的行&不是子查询的父查询,因为在第二个查询中,他是子查询的父查询,但要删除第一个查询中的最后3行,请尝试以下操作
12604 12493 400
12605 12493 108
13644 12493 37897
12752 12493 18
13643 12493
13642 12493
13641 12493
SELECT ppse.SUBORDINATE_POSITION_ID child_position_id
,ppse.PARENT_POSITION_ID manger_position_id
,b.person_id
FROM per_pos_structure_elements_v ppse
,APPS.xxkpc_hr_personnel_v2_mv b
WHERE b.position_id(+) = ppse.SUBORDINATE_POSITION_ID
AND ppse.POS_STRUCTURE_VERSION_ID =64
AND ppse.PARENT_POSITION_ID=12504
12514 12504 449
12483 12504 450
12487 12504 456
12497 12504 156
12889 12504 168
12493 12504
它不使用PARENT_POSITION_ID=12504,它将删除12493的行,该行是child'stry的父行,并从最后一条语句中删除not。如下所示。。。ppse.substance\u POSITION\u ID在从每个位置结构元素中选择substance\u POSITION\u ID
SELECT ppse.SUBORDINATE_POSITION_ID child_position_id
,ppse.PARENT_POSITION_ID manger_position_id
,b.person_id
FROM per_pos_structure_elements_v ppse
,APPS.xxkpc_hr_personnel_v2_mv b
WHERE b.position_id(+) = ppse.SUBORDINATE_POSITION_ID
AND b.type(+) = 'KPC Employee'
AND ppse.POS_STRUCTURE_VERSION_ID =64
AND ppse.PARENT_POSITION_ID=12493
AND
(b.person_id!=null OR
ppse.SUBORDINATE_POSITION_ID in
(SELECT SUBORDINATE_POSITION_ID from per_pos_structure_elements_v))