अन्य प्रस्ताव सही हैं लेकिन सबसे कॉम्पैक्ट और सबसे तेज़ समाधान सबसे अधिक संभावना है जब आप FIRST_VALUE और LAST_VALUE एनालिटिकल फंक्शन
SELECT DISTINCT
FIRST_VALUE(LOCATION_ID) OVER (PARTITION BY PERSON_ID ORDER BY THE_DATE
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS LOCATION_ID,
PERSON_ID,
MAX(THE_DATE) OVER (PARTITION BY PERSON_ID) AS LAST_DATE
FROM YOUR_TABLE;
अन्य लोग पसंद करते हैं
SELECT
MAX(LOCATION_ID) KEEP (DENSE_RANK FIRST ORDER BY DATE) as LOCATION,
PERSON_ID,
MAX(DATE) as LAST_DATE
FROM YOUR_TABLE
GROUP BY PERSON_ID;
जो वही करता है, लेकिन मैं इस खंड से इतना परिचित नहीं हूं। देखें aggregate_function KEEP