Partamos de algunos detalles básicos: SUM(), al igual que cualquier función de agregación como MIN(), MAX(), AVG() e incluso COUNT(), no realizan operaciones con NULL, por lo que todo ese IF() que pones es irrelevante. No hace NADA, porque NULL no es un dato, y en consecuencia no se pueden hacer operaciones aritméticas con él.
Además, si vas a SUMAR el contenido de cada registro, diferenciando los códigos,eso requiere un GROUP BY... que no estás poniendo.
Empecemos probando esto: