Oracle sql combine several rows of the same table into one row
I think this will give you desired resultset : 

select id,grp,itdesc,
MAX(CASE WHEN su=1 THEN DEN END) AS DEN,
MAX(CASE WHEN su=1 THEN NUM END) AS NUM,
MAX(CASE WHEN su=1 THEN SU END) AS SU ,  -- or just  "1 AS SU" 
MAX(CASE WHEN cs=1 THEN NUM END) AS CS,
MAX(CASE 
   WHEN sw=1 THEN NUM  
   WHEN sw=0 THEN 0 
   END) AS SW
FROM tab
GROUP BY 
id,grp,itdesc