该查询已运行2年多了,最近才开始抛出ORA-01427单行子查询,返回多行错误。有多个子查询时,调试此错误的最佳方法是什么?我应该在每个子查询中添加MAX语句吗?我尝试过将某些=运算符切换为IN,但这不起作用,而且我也不相信它会给我正确的结果。
感谢该社区可以提供的任何见解或帮助。我正在通过这个工作撕掉头发!
SELECT
NVL(
(SELECT
'Y'
FROM
PER_ASSIGnmENT_SUPERVISORS_F
WHERE
MANAGER_ID = PAPF.PERSON_ID
AND MANAGER_TYPE ='LINE_MANAGER'
AND TRUNC(SYSDATE) BETWEEN EFFECTIVE_START_DATE AND EFFECTIVE_END_DATE
AND ROWNUM = 1),'N') MANAGER_flaG,PAAM.ASSIGnmENT_STATUS_TYPE,PAAM.EMPLOYMENT_CATEGORY,TO_CHAR(PPOS.DATE_START,'YYYY-MM-DD') AS HIRE_DATE,PER_EXTRact_UTILITY.GET_STANDARD_WORKING_HOURS(PAAM.ASSIGnmENT_ID,TRUNC(SYSDATE)) AS STANDARD_WORKING_HOURS,TO_CHAR(PAAM.EFFECTIVE_START_DATE,'YYYY-MM-DD') AS EFFECTIVE_START_DATE,(
SELECT
PJFVL.JOB_CODE
FROM
PER_ALL_ASSIGnmENTS_M PAAM1,PER_JOBS_F_VL PJFVL
WHERE
PAAM1.PERSON_ID = PASF.MANAGER_ID
AND TRUNC(SYSDATE) BETWEEN PAAM1.EFFECTIVE_START_DATE AND PAAM1.EFFECTIVE_END_DATE
AND TRUNC(SYSDATE) BETWEEN PJFVL.EFFECTIVE_START_DATE AND PJFVL.EFFECTIVE_END_DATE
and PAAM1.ASSIGnmENT_STATUS_TYPE='actIVE'
AND PAAM1.ASSIGnmENT_TYPE = 'E'
AND PAAM1.effective_latest_change = 'Y'
AND PJFVL.JOB_ID = PAAM1.JOB_ID
)as Manager_job_code,(
SELECT
HOIF.ORG_INFORMATION1
FROM
PER_ALL_ASSIGnmENTS_M PAAM2,HR_ORGANIZATION_INFORMATION_F HOIF
WHERE
PAAM2.PERSON_ID = PASF.MANAGER_ID
AND HOIF.ORG_INFORMATION_CONTEXT = 'DEPT_DET'
and PAAM2.ASSIGnmENT_STATUS_TYPE='actIVE'
AND PAAM2.ASSIGnmENT_TYPE = 'E'
AND PAAM2.effective_latest_change = 'Y'
AND TRUNC(SYSDATE) BETWEEN PAAM2.EFFECTIVE_START_DATE AND PAAM2.EFFECTIVE_END_DATE
AND TRUNC(SYSDATE) BETWEEN HOIF.EFFECTIVE_START_DATE AND HOIF.EFFECTIVE_END_DATE
AND HOIF.ORGANIZATION_ID = PAAM2.ORGANIZATION_ID
) as Manager_dep_code,(SELECT
COUNT(PPOS.PERIOD_OF_SERVICE_ID)
FROM
PER_PERIODS_OF_SERVICE PPOS
WHERE
1 = 1
AND PAAM.PERSON_ID = PPOS.PERSON_ID
) AS INactIVE_WORKRELATIONSHIP,PAPF.PERSON_NUMber as SAMaccOUNTNAME,(SELECT CSB.NAME FROM
CMP_SALARY CS,CMP_SALARY_BASES CSB
WHERE
CS.ASSIGnmENT_ID = PAAM.ASSIGnmENT_ID
AND CS.SALARY_BASIS_ID = CSB.SALARY_BASIS_ID
and TRUNC(SYSDATE) BETWEEN CS.DATE_FROM AND CS.DATE_TO
) AS hourly_salary_Paid,TO_CHAR(PP.DATE_OF_BIRTH,'YYYY-MM-DD') AS DOB,PPNFV.LAST_NAME,PPNFV.FIRST_NAME,HLA.LOCATION_NAME as Location,HLA.ADDRESS_LINE_1 AS LOC_ADDRESS_1,HLA.ADDRESS_LINE_2 AS LOC_ADDRESS_2,HLA.TOWN_OR_CITY AS City,HLA.POSTAL_CODE AS ZIP_CODE,HLA.REGION_2 AS STATE,PPNFV.KNOWN_AS AS PREFERRED_NAME,TRIM((PPNFV.KNOWN_AS||' '||PPNFV.LAST_NAME)) AS PREFERRED_NAME_LAST_NAME,(SELECT
PPNFV.DISPLAY_NAME
FROM per_person_names_f_v PPNFV
WHERE 1 = 1
AND PPNFV.PERSON_ID = PASF.MANAGER_ID
AND PPNFV.NAME_TYPE='GLOBAL'
AND TRUNC(SYSDATE) BETWEEN PPNFV.EFFECTIVE_START_DATE AND PPNFV.EFFECTIVE_END_DATE
) AS MANAGER_NAME,(SELECT
PAPF.PERSON_NUMber
FROM PER_ALL_PEOPLE_F PAPF
WHERE PAPF.PERSON_ID = PASF.MANAGER_ID
AND TRUNC(SYSDATE) BETWEEN PAPF.EFFECTIVE_START_DATE AND PAPF.EFFECTIVE_END_DATE
) AS MANAGER_NUMber,HAOUFVL.NAME AS DEPARTMENT,PAAM.ASSIGnmENT_NAME AS JOB_TILE,PLE.NAME as Company,PJLG.INFORMATION1 AS FLSA,SUBSTR(PNI.NATIONAL_IDENTIFIER_NUMber,-4) AS Ssn_NUMber,PAAM.ASS_ATTRIBUTE1 as Officer_TITLE,(
select
bu.name
from
hr_all_organization_units_f_vl bu
where 1 = 1
and paam.business_unit_id = bu.organization_id
and trunc(sysdate) between bu.effective_start_date and bu.effective_end_date
) as BUS_UNIT,TO_CHAR (PPOS.ORIGINAL_DATE_OF_HIRE,'YYYY-MM-DD') AS ORIGINAL_DATE_OF_HIRE1,(
CASE WHEN PPLF.SEX = 'F' THEN
'TRUE'
ELSE
'FALSE'
END
) AS GENDER,(
CASE WHEN PJFFVL.JOB_FAMILY_NAME = 'Executive' THEN
'ELT'
ELSE
' '
END
) AS ELT_DESIGNATION,HOIF.ORG_INFORMATION1 as DEPATMENT_CODE,PJFV.JOB_CODE AS JOB_CODE,PAF.ADDRESS_LINE_1 AS HOME_ADDRESS_LINE_1,PAF.ADDRESS_LINE_2 AS HOME_ADDRESS_LINE_2,PAF.TOWN_OR_CITY AS HOW_ADDRESS_CITY,PAF.REGION_2 AS HOME_ADDRESS_STATE,PAF.POSTAL_CODE AS HOME_ADRESS_ZIP_CODE,PGFTL.NAME as Grade_level,(SELECT
distinct (per_extract_utility.get_decoded_lookup('JOB_FUNCTION_CODE',PJF.JOB_FUNCTION_CODE))
FROM
PER_JOB_SECURED_LIST_V job WHERE TRUNC(SYSDATE) BETWEEN effective_start_date AND effective_end_date
) as JOB_FUNCTION,pp.attribute1 as PER_NETWORKID,(SELECT
PPNFV.attribute1
FROM PER_PERSONS PPNFV
WHERE 1 = 1
AND PPNFV.PERSON_ID = PASF.MANAGER_ID
) AS MANAGER_NETWORKID,HOIF.ORG_INFORMATION2 AS REGION,to_char(paam.ass_attribute_date1,'MM/DD/YYYY') as OfficerPromoDate
FROM
PER_ALL_ASSIGnmENTS_M PAAM,PER_ASSIGnmENT_SUPERVISORS_F PASF,PER_PERIODS_OF_SERVICE PPOS,PER_ALL_PEOPLE_F PAPF,PER_PERSONS PP,per_person_names_f_v PPNFV,HR_LOCATIONS_ALL HLA,HR_ALL_ORGANIZATION_UNITS_F_VL HAOUFVL,PER_JOB_LEG_F PJLG,PER_NATIONAL_IDENTIFIERS PNI,PER_PEOPLE_LEGISLATIVE_F PPLF,PER_JOB_FAMILY_F_VL PJFFVL,PER_JOBS_F_V PJFV,HR_ORGANIZATION_INFORMATION_F HOIF,PER_ADDRESSES_F PAF,PER_PERSON_ADDR_USAGES_F PPAUF,PER_GRADES_F_TL PGFTL,PER_JOBS_F PJF,PER_LEGAL_EMPLOYERS PLE,HR_ALL_ORGANIZATION_UNITS_F HAOUF
WHERE
PAAM.ASSIGnmENT_STATUS_TYPE='actIVE'
AND PAAM.ASSIGnmENT_TYPE = 'E'
AND PAAM.effective_latest_change = 'Y'
AND PAAM.ASSIGnmENT_ID = PASF.ASSIGnmENT_ID(+)
AND PASF.MANAGER_TYPE (+) = 'LINE_MANAGER'
AND PNI.PERSON_ID(+) = PAAM.PERSON_ID
AND PAAM.PERSON_ID = PPLF.PERSON_ID(+)
and PJFV.JOB_FAMILY_ID= PJFFVL.JOB_FAMILY_ID(+)
AND PJFV.JOB_ID(+) = PAAM.JOB_ID
AND HOIF.ORGANIZATION_ID(+)= PAAM.ORGANIZATION_ID
AND HOIF.ORG_INFORMATION_CONTEXT(+) = 'DEPT_DetaILS'
AND PPAUF.PERSON_ID(+)= PAPF.PERSON_ID
AND PPAUF.ADDRESS_TYPE (+) = 'HOME'
AND PPAUF.ADDRESS_ID= PAF.ADDRESS_ID(+)
AND PGFTL.GRADE_ID(+)= PAAM.GRADE_ID
AND PJF.JOB_ID(+)= PAAM.JOB_ID
AND PJLG.INFORMATION_CATEGORY='HRX_US_JOBS'
and HAOUF.ORGANIZATION_ID(+)=PLE.ORGANIZATION_ID
and PAAM.LEGAL_ENTITY_ID=PLE.ORGANIZATION_ID
AND TRUNC(SYSDATE) BETWEEN PAAM.EFFECTIVE_START_DATE(+) AND PAAM.EFFECTIVE_END_DATE (+)
AND PAAM.PERIOD_OF_SERVICE_ID = PPOS.PERIOD_OF_SERVICE_ID
AND PAPF.PERSON_ID = PAAM.PERSON_ID
AND PP.PERSON_ID = PAAM.PERSON_ID
AND PPNFV.PERSON_ID = PAAM.PERSON_ID
AND HLA.LOCATION_ID(+) = PAAM.LOCATION_ID
AND PJLG.JOB_ID(+) = PAAM.JOB_ID
AND HAOUFVL.ORGANIZATION_ID(+) = PAAM.ORGANIZATION_ID
AND PPNFV.NAME_TYPE = 'GLOBAL'
AND TRUNC(SYSDATE) BETWEEN PPNFV.EFFECTIVE_START_DATE AND PPNFV.EFFECTIVE_END_DATE
AND TRUNC(SYSDATE) BETWEEN PAPF.EFFECTIVE_START_DATE AND PAPF.EFFECTIVE_END_DATE
AND TRUNC(SYSDATE) BETWEEN HAOUFVL.EFFECTIVE_START_DATE(+) AND HAOUFVL.EFFECTIVE_END_DATE(+)
AND TRUNC(SYSDATE) BETWEEN PPLF.EFFECTIVE_START_DATE(+) AND PPLF.EFFECTIVE_END_DATE(+)
AND TRUNC(SYSDATE) BETWEEN PJFFVL.EFFECTIVE_START_DATE(+) AND PJFFVL.EFFECTIVE_END_DATE(+)
AND TRUNC(SYSDATE) BETWEEN PJFV.EFFECTIVE_START_DATE(+) AND PJFV.EFFECTIVE_END_DATE(+)
AND TRUNC(SYSDATE) BETWEEN HOIF.EFFECTIVE_START_DATE(+) AND HOIF.EFFECTIVE_END_DATE(+)
AND TRUNC(SYSDATE) BETWEEN PAF.EFFECTIVE_START_DATE(+) AND PAF.EFFECTIVE_END_DATE(+)
AND TRUNC(SYSDATE) BETWEEN PPAUF.EFFECTIVE_START_DATE(+) AND PPAUF.EFFECTIVE_END_DATE(+)
AND TRUNC(SYSDATE) BETWEEN PGFTL.EFFECTIVE_START_DATE(+) AND PGFTL.EFFECTIVE_END_DATE(+)
AND TRUNC(SYSDATE) BETWEEN PJF.EFFECTIVE_START_DATE(+) AND PJF.EFFECTIVE_END_DATE(+)
AND TRUNC(SYSDATE) BETWEEN PLE.EFFECTIVE_START_DATE AND PLE.EFFECTIVE_END_DATE
AND TRUNC(SYSDATE) BETWEEN HAOUF.EFFECTIVE_START_DATE(+) AND HAOUF.EFFECTIVE_END_DATE(+)
AND TRUNC(SYSDATE) BETWEEN HLA.EFFECTIVE_START_DATE(+) AND HLA.EFFECTIVE_END_DATE(+)
AND TRUNC(SYSDATE) BETWEEN PJLG.EFFECTIVE_START_DATE(+) AND PJLG.EFFECTIVE_END_DATE(+)
AND TRUNC(SYSDATE) BETWEEN PASF.EFFECTIVE_START_DATE(+) AND PASF.EFFECTIVE_END_DATE(+)
ORDER BY PAPF.PERSON_NUMber