Window functions are your friends. :-)
SELECT RECORD_NUMBER,MIN(CREATE_DATE) CREATE_DATE FROM ( SELECT *, MIN(TO_DATE) OVER (PARTITION BY RECORD_NUMBER ORDER BY CREATE_DATE DESC) TO_DATE2 FROM ( SELECT *, CASE WHEN DIFF > 24 THEN CREATE_DATE WHEN NEXT_DATE IS NULL THEN '2100-01-01' ELSE NULL END TO_DATE FROM ( SELECT *, SUM(SECONDS_BETWEEN(CREATE_DATE,NEXT_DATE)/3600) OVER (PARTITION BY RECORD_NUMBER ORDER BY CREATE_DATE) DIFF FROM ( SELECT RECORD_NUMBER, CREATE_DATE, LEAD(CREATE_DATE) OVER (PARTITION BY RECORD_NUMBER ORDER BY CREATE_DATE) NEXT_DATE FROM "TEST".TEST_TABLE) GROUP BY RECORD_NUMBER, CREATE_DATE,NEXT_DATE))) GROUP BY RECORD_NUMBER, TO_DATE2 ORDER BY RECORD_NUMBER, CREATE_DATE