How implement CASE statement in query
Your syntax for the CASE expression is correct (it's an expression, not a statement!) You can simplify it slightly by removing the second WHEN:

CASE WHEN m.MAXDATE IS NOT NULL THEN '*' ELSE '' END


and the query: 

SELECT Ename, Hiredate, 
       CASE WHEN m.MAXDATE IS NOT NULL THEN '*' ELSE '' END AS MAXDATE
FROM EMP
  LEFT JOIN (SELECT max(Hiredate) AS MAXDATE 
             FROM EMP) m
  ON EMP.HIREDATE = m.MAXDATE ;


And you don't really need the self-join. You could have the same result with a window aggregate function:

SELECT Ename, Hiredate, 
       CASE WHEN HIREDATE = max(HIREDATE) OVER () 
           THEN '*' ELSE '' END AS MAXDATE
FROM EMP ;