Das Coalesce oder ifnull sollte auf jeden fall immer NULL in einen Defaultwert umwandeln.
Ich kann mir nur vorstellen, dass es hier wegen dem LEFT JOIN eine Konstellation gibt, wo das nicht zutrifft. Müsste man sich im Detail anschauen.
Du könntest (z.B. via CTE, sprich: with x as) das ganze als Subselect hinterlegen.
Dann machst du ein "Select ... from x" wo du im Select das Zeug mit COALESCE & Co machst.
Dadurch ersparst du dir dann das CASE & Co.

lg Andreas