У меня есть запрос, чтобы узнать детали записи элемента. Я использовал приведенный ниже запрос для того же -
select * from
(
Select distinct PAPF.PERSON_NUMBER
, PAAM.ASSIGNMENT_NUMBER
, PPNF.FULL_NAME
, PAAM.ASSIGNMENT_STATUS_TYPE ASSIGNMENT_STATUS
, PETF.BASE_ELEMENT_NAME ELEMENT_NAME
, to_char(PEEVF.EFFECTIVE_START_DATE, 'YYYY/MM/DD') ENTRY_START_DATE
, to_char(PEEVF.EFFECTIVE_END_DATE, 'YYYY/MM/DD') ENTRY_END_DATE
, PIVF.BASE_NAME INPUT_NAME
From PER_ALL_PEOPLE_F PAPF
, PER_PERSON_NAMES_F PPNF
, PER_PERIODS_OF_SERVICE PPOS
, PER_ALL_ASSIGNMENTS_M PAAM
, PAY_PAY_RELATIONSHIPS_DN PPRD
, PAY_REL_GROUPS_DN PRGD
, PAY_ELEMENT_TYPES_F PETF
, PAY_ELEMENT_ENTRIES_F PEEF
, PAY_ELEMENT_ENTRY_VALUES_F PEEVF
, PAY_INPUT_VALUES_F PIVF, PAY_ENTRY_USAGES peu, PAY_PAYROLL_ASSIGNMENTS PPA, FND_LOOKUP_VALUES FLV
Where 1=1
And PEEF.ELEMENT_TYPE_ID = PETF.ELEMENT_TYPE_ID
And PEEVF.ELEMENT_ENTRY_ID = PEEF.ELEMENT_ENTRY_ID
And PIVF.ELEMENT_TYPE_ID = PEEF.ELEMENT_TYPE_ID
And PIVF.INPUT_VALUE_ID = PEEVF.INPUT_VALUE_ID
AND PEEF.ELEMENT_ENTRY_ID = PEU.ELEMENT_ENTRY_ID
And PPRD.PAYROLL_RELATIONSHIP_ID = PEU.PAYROLL_RELATIONSHIP_ID
AND FLV.LOOKUP_TYPE = 'PAY_USAGE_LEVEL'
and flv.lookup_code = peu.usage_level
and flv.language = 'US'
AND PAAM.ASSIGNMENT_ID = PPA.PAYROLL_ASSIGNMENT_ID (+)
AND PAAM.ASSIGNMENT_ID = PPA.HR_ASSIGNMENT_ID (+)
And PEEF.PERSON_ID = PAPF.PERSON_ID
And PPNF.PERSON_ID = PAPF.PERSON_ID
And PPNF.NAME_TYPE = 'GLOBAL'
And PPOS.PERSON_ID = PAPF.PERSON_ID
And PAAM.PERSON_ID = PAPF.PERSON_ID
And PAAM.PERIOD_OF_SERVICE_ID = PPOS.PERIOD_OF_SERVICE_ID
And PAAM.ASSIGNMENT_TYPE In ('E', 'C')
And PAAM.EFFECTIVE_LATEST_CHANGE = 'Y'
And PAAM.ASSIGNMENT_STATUS_TYPE In ('ACTIVE', 'SUSPENDED')
And PPRD.PERSON_ID = PAPF.PERSON_ID
And PRGD.PAYROLL_RELATIONSHIP_ID = PPRD.PAYROLL_RELATIONSHIP_ID
And PRGD.ASSIGNMENT_ID = PAAM.ASSIGNMENT_ID
And PRGD.GROUP_TYPE = 'A'
And sysdate Between PIVF.EFFECTIVE_START_DATE AND PIVF.EFFECTIVE_END_DATE
And sysdate Between PPNF.EFFECTIVE_START_DATE AND PPNF.EFFECTIVE_END_DATE
And sysdate Between PETF.EFFECTIVE_START_DATE AND PETF.EFFECTIVE_END_DATE
AND sysdate Between PAPF.EFFECTIVE_START_DATE AND PAPF.EFFECTIVE_END_DATE
And sysdate Between PAAM.EFFECTIVE_START_DATE AND PAAM.EFFECTIVE_END_DATE
--And sysdate Between PEEVF.EFFECTIVE_START_DATE AND --PEEVF.EFFECTIVE_END_DATE
and PETF.BASE_ELEMENT_NAME = 'Bonus Production'
)
Вывод, который я получаю, правильный,
S.No. PERSON_NUMBER ASSIGNMENT_NUMBER FULL_NAME ASSIGNMENT_STATUS ELEMENT_NAME ENTRY_START_DATE ENTRY_END_DATE INPUT_NAME
1 101 E101-2 XYZ ACTIVE Bonus Production 2020/02/03 2020/02/16 amount
2 101 E101-2 XYZ ACTIVE Bonus Production 2020/03/04 2020/03/16 Percentage
3 102 E102-2 RFC ACTIVE Bonus Production 2020/02/03 4712/12/31 amount
Теперь мне нужна только последняя запись для сотрудника , если я добавлю условие sysdate Between PEEVF.EFFECTIVE_START_DATE AND PEEVF.EFFECTIVE_END_DATE
, я не получу # 1,2. Но мне нужно # 2 в выводе, так как это последняя запись для этого сотрудника.
Какое условие я могу добавить в этот запрос для получения последней записи?