Skip to content
Advertisement

SQL not recognizing column alias in where clause

I am only a beginner in SQL, but I’ve come across this annoying error. SQL is having an issue with the WHERE clause of this script:

I am receiving this error:

I have no idea why it has no issue with price_total nor discount_total, but is reporting item_total as invalid. I am trying to first select only the items which have a total greater than 500 when the discount amount is subtracted and it is multiplied by the quantity. Then, I need to sort the results in descending order by item_total

Advertisement

Answer

An alias can be used in a query select list to give a column a different name. You can use the alias in GROUP BY, ORDER BY, or HAVING clauses to refer to the column.

Standard SQL disallows references to column aliases in a WHERE clause. This restriction is imposed because when the WHERE clause is evaluated, the column value may not yet have been determined.

So, the following query is illegal:

The column alias is allowed in:

  • GROUP BY
  • ORDER BY
  • HAVING

You could refer to the column alias in WHERE clause in the following cases:

  1. Sub-query
  2. Common Table Expression(CTE)

For example,

User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement