I wouldn't nest a select statement like that.
Rather do another outer join:
select A.name
,(Case WHEN A.id = 2 then C.ID ELSE ??? END)
from TableOne A
left join TabletTwo B
on A.id=B.id
LEFT JOIN TableThree C
ON C.id = A.id
Also, replace the "???" with whatever value you want if A.id doesn't = 2
But if you absolutely needed to:
select A.name
,(SELECT Case WHEN A.id = 2 then C.ID ELSE ??? END FROM TableThree C left join TableOne A ON A.id = C.id )
from TableOne A
left join TabletTwo B
on A.id=B.id