У меня есть приведенный ниже код, который я хочу предоставить мне уникальный список papf.person_number , а затем он должен дать мне дату создания Отчет о проверке безопасности где он существует (который, кажется, работает). Моя проблема в том, что он возвращает несколько строк (от 3 до 6) для каждого уникального papf.person_number . Я знаю, что может возникнуть много вопросов, когда вы не знаете базу данных, но надеюсь, что вы можете дать мне несколько советов о том, где я ошибаюсь с моими утверждениями AND (стандарт компании, похоже, использует условия, а не объединения).
SELECT papf.person_number
, (ppnf.first_name||' '||ppnf.last_name) full_name
, paam.assignment_type
,(SELECT * FROM
(Select TO_CHAR(dor.creation_date, 'DD/MM/YYYY')
From hr_documents_of_record dor
WHERE dor_type.document_type = 'Security Clearance Report'
AND papf.person_id = dor.person_id
AND dor_type.document_type_id = dor.document_type_id
Order BY dor.creation_date DESC
)
WHERE ROWNUM=1) "Security Clearance Report"
FROM per_all_people_f papf
,per_person_names_f ppnf
,hr_documents_of_record dor
,hr_document_types_vl dor_type
,per_all_assignments_m paam
WHERE papf.person_id = ppnf.person_id
AND ppnf.person_id = dor.person_id
AND dor.person_id = paam.person_id
AND SYSDATE BETWEEN papf.effective_start_date AND papf.effective_end_date
AND SYSDATE BETWEEN ppnf.effective_start_date AND ppnf.effective_end_date
AND SYSDATE BETWEEN paam.effective_start_date AND paam.effective_end_date
AND paam.effective_latest_change = 'Y'
AND paam.primary_flag = 'Y'
AND ppnf.name_type = 'GLOBAL'
AND paam.assignment_status_type = 'ACTIVE'
AND paam.assignment_type IN('E','C','N','P')
AND dor_type.document_type_id = dor.document_type_id
Order by full_name