Referencing a renamed column on SELECT clause in SQL
The SQL Standard does not allow a renamed column on the SELECT clause to be referenced on a different part of the SQL statement such as the WHERE clause. To do it on a single statement, an SQL common table expression can be used.
SELECT name, CASE WHEN type = 1 THEN 'A' WHEN type = 2 THEN 'B' ELSE 'C' END AS typeflag FROM custtable WHERE typeflag = 'B'
I know this can be done by doing "where type = 2" but I can't give you an easier example. When I try this, SQL says "typeflag is not a column in the table."
To do this on a single statement, you can use an SQL common table expression. I find table expressions helpful in breaking a complex SQL statement into smaller, simpler components. Here's an example of implementing your statement with a common table expression:
WITH custexp AS (SELECT name, CASE WHEN type = 1 THEN 'A' WHEN type = 2 THEN 'B' ELSE 'C' END AS typeflag FROM custtable) SELECT name, typeflag FROM custexp WHERE typeflag='B'