No, no puedes usar un SELECT de la forma que quieras.
En su ejemplo usando CASE, no está usando una "declaración" CASE, está usando una expresión CASE , que pasa a estar incrustado dentro de una instrucción SQL. Puede usar una subconsulta en ese caso porque está dentro del contexto de una declaración SQL, no una declaración de procedimiento. No podría usar una subconsulta como esta en una instrucción CASE de procedimiento.