Sql 如何限制返回结果
我的查询返回重复的行,我只想返回一行Sql 如何限制返回结果,sql,oracle,Sql,Oracle,我的查询返回重复的行,我只想返回一行 select papf.Full_Name, papf.Employee_number, papf.DatE_OF_BIRTH, peef.last_update_date /*, petf1.ELEMENT_NAME as MedicalSchemeName*/ from per_all_people_f papf ,per_all_assignments
select papf.Full_Name,
papf.Employee_number,
papf.DatE_OF_BIRTH,
peef.last_update_date
/*,
petf1.ELEMENT_NAME as MedicalSchemeName*/
from per_all_people_f papf
,per_all_assignments_f paaf
,PAY_ELEMENT_ENTRIES_F peef
,pay_element_types_f petf
--,fnd_user fnu
where (papf.Employee_number) not in
(select
papf1.Employee_number
from per_all_people_f papfinner
,per_all_assignments_f paafinner
,PAY_ELEMENT_ENTRIES_F peefinner
,pay_element_types_f petfinner
where paafinner.person_id = papfinner.person_id
and peefinner.assignment_id = paafinner.assignment_id
and peefinner.element_type_id = petfinner.element_type_id
and upper(petf1.ELEMENT_NAME) like '%Condition%'
and SYSDATE BETWEEN papfinner.EFFECTIVE_START_DATE AND papfinner.EFFECTIVE_END_DATE
and SYSDATE BETWEEN paafinner.EFFECTIVE_START_DATE AND paafinner.EFFECTIVE_END_DATE
and SYSDATE BETWEEN peefinner.EFFECTIVE_START_DATE AND peefinner.EFFECTIVE_END_DATE
and SYSDATE BETWEEN petfinner.EFFECTIVE_START_DATE AND petfinner.EFFECTIVE_END_DATE
)
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 peef.EFFECTIVE_START_DATE AND peef.EFFECTIVE_END_DATE
and SYSDATE BETWEEN petf.EFFECTIVE_START_DATE AND petf.EFFECTIVE_END_DATE
and upper(petf.ELEMENT_NAME) not like '%Condition%'
and rownum <= 10000
order by peef.last_update_date;
....
此查询工作正常并返回正确的结果,但结果重复。我只需要一个唯一的行您要加入的一个表返回双倍或更多。我打赌是皮夫。也许您只能显示MAXlast_update_日期,并根据该日期汇总其余日期。那就分组吧
select papf.Full_Name,
papf.Employee_number,
papf.DatE_OF_BIRTH,
last_update_date = MAX(peef.last_update_date)
...
GROUP BY
papf.Full_Name,
papf.Employee_number,
papf.DatE_OF_BIRTH
使用rownum是否回答了您的问题?如果您需要返回多个字段,则分组方式的效率可能会降低。对于查询中的三个字段,这应该是可以的,但是,如果您返回所有字段,那么如果您在详细信息中生成了一个按上述顺序描述由组中的字段划分的行\号,然后创建一个外部查询,返回所有字段,并使用WHERE子句限制派生行\号字段=1,您将获得更好的性能