How to search records based on date range for other matching data
Try ans use EXISTS to get all records where another (or the same for that matter) exists with the same app ID, a stage of 'D1' and the start date or the end date in march.

Assuming you're on Oralce, this could look like this:

SELECT *
       FROM elbat t1
       WHERE EXISTS (SELECT *
                            FROM elbat t2
                            WHERE t2.app_no = t1.app_no
                                  AND stage = 'D1'
                                  AND (t2.start_date &gt;= to_date('2019-03-01', 'yyyy-mm-dd')
                                       AND t2.start_date &lt; to_date('2019-04-01', 'yyyy-mm-dd')
                                        OR t2.end_date &gt;= to_date('2019-03-01', 'yyyy-mm-dd')
                                           AND t2.end_date &lt; to_date('2019-04-01', 'yyyy-mm-dd')));