I've a table which has current record as well as previous records:

```

|   PERIOD     |    START DATE      |      END DATE      | VAL1  |  VAL2 |
|   218413     | 25-JAN-19 00:00:00 | 20-MAY-19 00:00:00 |  MA   |   12  |
|   218413     | 25-JAN-19 00:00:00 | 20-MAY-19 00:00:00 |  MA   |   21  |
|   218413     | 25-JAN-19 00:00:00 | 20-MAY-19 00:00:00 |  MA   |   32  |
|   218512     | 24-JAN-19 00:00:00 | 20-MAY-19 00:00:00 |  MA   |   14  |
|   218402     | 08-AUG-18 00:00:00 | 27-DEC-18 00:00:00 |  MA   |   15  |
|   218402     | 08-AUG-18 00:00:00 | 27-DEC-18 00:00:00 |  MA   |   24  |
|   218782     | 18-APR-18 00:00:00 | 17-JUL-18 00:00:00 |  MA   |   44  |
|   218782     | 18-APR-18 00:00:00 | 17-JUL-18 00:00:00 |  MA   |   54  |

```

I am using Oracle DB. There is no fixed time gap between the end date of old records and start date of new records. 
I want to see record for the recent old PERIOD based on current PERIOD. In above example,current PERIOD is 218413 so the result should be: 

```

|   218402     | 08-AUG-18 00:00:00 | 27-DEC-18 00:00:00 |  MA   |   

```

if I remove VAL2 from group by.
How can I do this in SQL?