Generate a list from columns that do not contain a zero for each row
Something like (untested):

select
  id,
  rtrim(
    case when c1 != 0 then 'column1,' end
 || case when c2 != 0 then 'column2,' end
 || case when c3 != 0 then 'column3,' end
 || case when c4 != 0 then 'column4,' end
 || case when c5 != 0 then 'column5' end, ',') as descr
from tab1;