Some of your Nvl() functions are redundant.

nvl(sol.schedule_status_code , 'N' ) = 'Y'

... is the same as ...

sol.schedule_status_code = 'Y'