我正在编写sql查询来获取最新的主管和他们的工作

问题描述 投票:0回答:1

我正在编写 sql 查询来获取最新的主管及其工作,但我面临的问题是查询中出现多个主管,为员工提供多个工作。应该只有一名主管负责一份工作。

我可以在下面查询的第一行中获得正确的supervisor_id和他们的工作。 使用 从 PER_ALL_ASSIGNMENTS_F 中选择 SUPERVISOR_ID、JOB_ID,其中 PERSON_ID = 24387 按 EFFECTIVE_START_DATE DESC 排序;

此代码检索离职者、其主管和主管职位。

select 
DISTINCT
PO.SEGMENT1,
HR.NAME,
PAPF.FULL_NAME AS LEAVER_FULL_NAME,
PAPF.PERSON_ID LEAVER_ID,
PAAF.SUPERVISOR_ID,
PAPF2.FULL_NAME AS SUPERVISOR,
PJ.Name JOB_NAME
FROM po_headers_all PO,
HR_OPERATING_UNITS HR,
po_distributions_all PD,
PER_ALL_PEOPLE_F PAPF,
PER_ALL_PEOPLE_F PAPF2,
PER_ALL_ASSIGNMENTS_F PAAF,
per_person_types ppt ,
PER_JOBS PJ
WHERE PD.PO_HEADER_ID=PO.PO_HEADER_ID
AND PO.CLOSED_CODE = 'OPEN'
AND PO.TYPE_LOOKUP_CODE LIKE 'STANDARD'
AND PAPF.PERSON_ID= PD.DELIVER_TO_PERSON_ID
AND PAAF.PERSON_ID = PAPF.PERSON_ID
AND PAPF2.PERSON_ID =PAAF.SUPERVISOR_ID
AND HR.ORGANIZATION_ID = PO.ORG_ID
AND PJ.JOB_ID=PAAF.JOB_ID
AND PJ.NAME NOT IN ('Director','Vice President',' CEO','CFO','Executive VP','GlobalOperations EVP','Mfg VP','Sourcing and Proc VP','Sr. Vice President')
AND PJ.NAME NOT LIKE 'Senior VP%GM'
--AND   PAPF.EFFECTIVE_START_DATE BETWEEN :P_DATE_FROM AND P_DATE_TO
--AND   PAAF.EFFECTIVE_START_DATE BETWEEN :P_DATE_FROM AND P_DATE_TO
--AND PAPF.EFFECTIVE_START_DATE BETWEEN TO_DATE('2020-01-01', 'YYYY-MM-DD') AND TO_DATE('2023-12-31', 'YYYY-MM-DD')
--AND PAAF.EFFECTIVE_START_DATE BETWEEN TO_DATE('2020-01-01', 'YYYY-MM-DD') AND TO_DATE('2023-12-31', 'YYYY-MM-DD') 
AND   papf.person_type_id           = ppt.person_type_id
AND   UPPER(PPT.SYSTEM_PERSON_TYPE) = UPPER('EX_EMP')
 and PO.SEGMENT1 in ('2044611')
ORDER BY PAPF2.FULL_NAME

我只需要一名主管和他们当前的主管职位。 它获取多个主管和多个工作。

sql plsql
1个回答
0
投票

您可以提供示例数据集吗?

© www.soinside.com 2019 - 2024. All rights reserved.