Updating column based on conditions from another table
For the first two statements, try:

set    a.status = COALESCE( (select case 
                        ...
                                and   a.cvg_type_cd not in (...)), a.status);  


This way, if the select case statement generates a NULL value, you'll set the status back to what it already was.

For the third, try this:

set    status = case 
                  ...
                  when cvg_cstat in ('H') then 'NB_Rider Claims'
                  else status 
                end


Similarly, rather than allowing the case statement to return a NULL value, you force it to return the original status if none of the updated values match.

NOTE: You might get better performance in the first two queries if you modified the query to eliminate rows from a (that is, i2017_mar_ye) that should not be updated. For instance, in the second query, add a WHERE clause on the outer query:

WHERE a.cvg_cstat NOT IN ('A','P C','PCC','PEC','PUR','R','RC','RE','PUC','PCR','B','I','K','N','D','E','S','F','H')
  AND a.cvg_iss_dt &lt;= to_date('31-March-2016') 
  AND a.cvg_cstat not in ('1','2','3','4') 
  AND a.cvg_type_cd not in ('DCX','DCW','CWG','CWN','DK2','FK2','DV2','FV2','DX2','FX2','BT1','VT9','VX9','GT3','GX3','CT1','CX1','TX7','OX3','OX4','VT1','VX1','CX2','GX4','TX9');


You can remove the last three of those lines from the subquery at that point, as well.

Depending on your DBMS, you may be able to use a join between i2017_mar_ye and i2016_mar within the UPDATE statement, but only update i2017_mar_ye. That might allow for better performance as well.