Un problema se parece a la expresión del mode columna. La subconsulta en la expresión CASE debe devolver una expresión y una fila. En lugar de SELECT * debería ser SELECT <expr> , y debería haber una cláusula LIMIT 1 si existe la posibilidad de que devuelva más de una fila.
Si necesita más de una expresión, entonces deberá repetir esa expresión CASE, con una subconsulta diferente, o quizás desee una operación JOIN.