Du kan ikke bruge aliaset i WHERE-sætningen. Gentag enten udtrykket (rodet), ellers læg dit SELECT i en underforespørgsel og indsæt derefter WHERE-sætningen i den ydre forespørgsel:
SELECT Id, Name, City, State
FROM
(
SELECT
ID,
Name,
CASE T.N
WHEN 1 THEN City1
WHEN 2 THEN City2
WHEN 3 THEN City3
END AS City,
CASE T.N
WHEN 1 THEN State1
WHEN 2 THEN State2
WHEN 3 THEN State3
END AS State
FROM YourTable
CROSS JOIN (VALUES(1),(2),(3)) AS T(N)
) T1
WHERE City IS NOT NULL