Doesn't have anything to do with the Case statement, you haven't supplied the value for the Bind variable
:ID
in the last row.
And Piebald is right, you'd probably do better with some left outer joins
SELECT TABLE1.NAME
,TABLE1.AGE
,TABLE2.DESCRIPTION
,T1.DESCRIPTION
,T2.DESCRIPTION
FROM TABLE1
JOIN TABLE2
ON TABLE1.cde = TABLE2.cde
left OUTER JOIN TABLE3 t1
ON TABLE1.CODE1 = T1.CDE
left OUTER JOIN TABLE3 t2
ON TABLE1.CODE2 = T2.CDE
WHERE TABLE1.ID = :ID